splatone 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,14 +11,18 @@ SNSのジオタグ付きポストをキーワードに基づいて収集する
11
11
  - Bulky: クロールした全てのジオタグを小さな点で描画する
12
12
  - Marker Cluster: 密集しているジオタグをクラスタリングしてまとめて表示する
13
13
 
14
- ## 既知のバグ
14
+ ## Change Log
15
15
 
16
- - <s>JSON.stringify(json)で変換できる大きさに制限があり、数十万件等の大きな結果を生み出すクエリは、クロール後、結果のブラウザへの転送で失敗します。</s>
17
- - サイズの問題は、一度ファイルに書き出す事で解決しました。(v0.0.6)
18
- - **--no-filed**オプションを付ける事で、従来の方法で実行できます。(ファイルに書き出すより多少速い)
19
- - 以下の画像のように大きな範囲で多くのジオタグが収集できるようになりました。
16
+ ### v0.0.7 → v0.0.8
20
17
 
21
- ![](/assets/screenshot_massive_points_bulky.png)
18
+ * 範囲指定とHexGridの表示・非表示ができるようになりました。
19
+ * デフォルトで非表示
20
+ * 表示したい場合はレイヤコントロールにて切り替えてください
21
+
22
+ ### v0.0.6 → v0.0.7
23
+
24
+ * Hexサイズの自動設定モードが実装され、デフォルトとなりました。
25
+ * Web画面のハンバーガーメニューから変更できます。(サイズ0で自動)
22
26
 
23
27
  # 使い方
24
28
 
@@ -162,3 +166,8 @@ $ node crawler.js -p flickr -o '{"flickr":{"API_KEY":"aaaaaaaaaaaaaaaaaaaaaaaaaa
162
166
 
163
167
  ![](https://github.com/YokoyamaLab/Splatone/blob/main/assets/icon_data_export.png?raw=true)
164
168
 
169
+ ### 広範囲なデータ収集例
170
+
171
+ * あまりにも大きいとFlickrから一時的にBANされることがありますので注意してください。
172
+
173
+ ![](/assets/screenshot_massive_points_bulky.png)
package/crawler.js CHANGED
@@ -28,7 +28,7 @@ import { hideBin } from 'yargs/helpers';
28
28
  // -------------------------------
29
29
  import { loadPlugins } from './lib/pluginLoader.js';
30
30
  import paletteGenerator from './lib/paletteGenerator.js';
31
- import { dfsObject, saveGeoJsonObjectAsStream } from './lib/splatone.js';
31
+ import { dfsObject, bboxSize, saveGeoJsonObjectAsStream } from './lib/splatone.js';
32
32
 
33
33
  const __filename = fileURLToPath(import.meta.url);
34
34
  const __dirname = dirname(__filename);
@@ -108,7 +108,7 @@ try {
108
108
  // コマンド例
109
109
  // node crawler.js -p flickr -o '{"flickr":{"API_KEY":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}' -k "商業=shop,souvenir,market,supermarket,pharmacy,store,department|食べ物=food,drink,restaurant,cafe,bar|美術 館=museum,art,exhibition,expo,sculpture,heritage|公園=park,garden,flower,green,pond,playground" --vis-bulky
110
110
  // node crawler.js -p flickr -k "水域=canal,channel,waterway,river,stream,watercourse,sea,ocean,gulf,bay,strait,lagoon,offshore|橋梁=bridge,overpass,flyover,aqueduct,trestle|通路=street,road,thoroughfare,roadway,avenue,boulevard,lane,alley,roadway,carriageway,highway,motorway|ランドマーク=church,sanctuary,chapel,cathedral,basilica,minster,abbey,temple,shrine" --vis-bulky
111
- // node crawler.js -p flickr -k "水辺=sea,ocean,beach|山岳=mountain,mount,hill" --vis-bulky --chopped
111
+ // node crawler.js -p flickr -k "水辺=sea,ocean,beach,river,delta,lake,coast,creek|緑地=forest,woods,turf,lawn,jungle,trees,rainforest,grove,savanna,steppe|砂漠=desert,dune,outback,barren,wasteland" --vis-bulky --filed
112
112
  let yargv = await yargs(hideBin(process.argv))
113
113
  .strict() // 未定義オプションはエラー
114
114
  .usage('使い方: $0 [options]')
@@ -304,7 +304,7 @@ try {
304
304
  title: title,
305
305
  lat: DEFAULT_CENTER.lat,
306
306
  lon: DEFAULT_CENTER.lon,
307
- defaultCellSize: 0.5,
307
+ defaultCellSize: 0,
308
308
  defaultUnits: 'kilometers',
309
309
  defaultKeywords: argv.keywords,
310
310
  });
@@ -357,19 +357,32 @@ try {
357
357
  console.warn("invalid sessionId:", req.sessionId);
358
358
  return;
359
359
  }
360
- const { bbox, drawn, cellSize = 0, units = 'kilometers', tags = 'sea,beach|mountain,forest' } = req.query;
360
+ let { bbox, drawn, cellSize = 0, units = 'kilometers', tags = 'sea,beach|mountain,forest' } = req.query;
361
+ const boundary = String(bbox).split(',').map(Number);
361
362
  if (cellSize == 0) {
362
363
  //セルサイズ自動決定()
364
+ //console.log("[cellSize?]",boundary,units);
365
+ const { width, height } = bboxSize(boundary, units);
366
+ //console.log("","w=",width,"/\th=",height);
367
+ cellSize = Math.max(width / (3 * 30), height / (30 * Math.sqrt(3)));
368
+ if(cellSize==0){
369
+ cellSize=1;
370
+ }
371
+ const msg = "セルサイズを[ " + cellSize + ' ' + units + " ]に設定しました。";
372
+ console.log(msg)
373
+ io.to(sessionId).timeout(5000).emit('toast', {
374
+ text: msg,
375
+ class: "info"
376
+ });
363
377
  }
364
378
  const fallbackBbox = [139.55, 35.53, 139.92, 35.80];
365
379
  let bboxArray = fallbackBbox;
366
380
 
367
381
  if (bbox) {
368
- const parts = String(bbox).split(',').map(Number);
369
- if (parts.length !== 4 || !parts.every(Number.isFinite)) {
382
+ if (boundary.length !== 4 || !boundary.every(Number.isFinite)) {
370
383
  return res.status(400).json({ error: 'bbox must be "minLon,minLat,maxLon,maxLat"' });
371
384
  }
372
- bboxArray = parts;
385
+ bboxArray = boundary;
373
386
  }
374
387
 
375
388
  const sizeNum = Number(cellSize);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "splatone",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Multi-layer Composite Heatmap",
5
5
  "homepage": "https://github.com/YokoyamaLab/Splatone#readme",
6
6
  "bugs": {
package/views/index.ejs CHANGED
@@ -370,6 +370,7 @@
370
370
  //console.log(overlays);
371
371
  layerControl = L.control.layers([baseLayer], {
372
372
  ...overlays,
373
+ "Boundary": drawnItems,
373
374
  "Hex Grid": hexLayer,
374
375
  "Tri Grid": triLayer
375
376
  }, {