- ãã¡ãžãŒã¹ããŒã ã䜿çšããã¢ãã¬ã¹ãšããŒã¿ã¹ãã¢ã«ã€ããŠ
- Javaã§ã®ãžãªããŒã¿åŠçãã€ãŸãJavaããããžã¹ã€ãŒãã«ã€ããŠ
- éçºè ã«ãšã£ãŠã®ãã·ã³ãã«ããã®ã³ã¹ãã«ã€ããŠ
- Pure Java nosqlããã¥ã¡ã³ãããŒã¿ããŒã¹/å šææ€çŽ¢ãšã³ãžã³ã«ã€ããŠ-Elasticsearchã
OSMã«äžæ £ããªJavaãããªãŒããŒåã
OSMã¯ãéåžžã«è©³çŽ°ãªã°ããŒãã«ã«ãã¬ããžãæã€ãªãŒãã³ãªå°ç空éããŒã¿ããŒã¹ã§ãã
ãŠãŒã¶ãŒã«ãšã£ãŠã¯ããªã³ã©ã€ã³ã§é²èŠ§ããããããã²ãŒã¿ãŒã«ããŠã³ããŒãããããé»è©±ã§ç·šéããããå°å·ããããåæ¥å©çãåãåãããšãå«ãä»ã®èããããæ¹æ³ã§äžè¬çã«äœ¿çšãããããããšãã§ããŸãã
éçºè ã®èŠ³ç¹ããèŠããšãããã¯éåžžã«ç¹æ®ãªããŒã¿ããŒã¹ã§ãã
- OSMã«ã¯æ確ãªããŒã¿ã¹ããŒã ã¯ãªããGISãã¬ã€ã€ãŒã«åå²ããéåžžã®æ¹æ³ã¯ãããŸããã ãªããžã§ã¯ãã®ã¿ã€ãããã®ããããã£ããããŠããæå³ã§ã¯ãã®ãžãªã¡ããªã¯ãã¿ã°-ããã¹ãã®ããŒãšå€ã®ãã¢ãä»ããŠèšå®ãããŸãã
- ãžãªã¡ããªã¯ãã€ã³ãã«å¯ŸããŠã®ã¿ä¿åãããŸãã ã©ã€ã³ã¯ãid'shnikovãã€ã³ãã®é åã§ãã ããªãŽã³-ã©ã€ã³ãžã®ãªã³ã¯ã®ã»ããã§ãå¢çã«ã©ã€ã³ãå«ãŸããŠãããã©ããã瀺ããŸã-å éšãŸãã¯å€éšã
- ããã«ãããã³ãã¥ããã£ã¯æ°ããããŒã¿åãå³åº§ã«äœæã§ããŸãã æ©éãããŒã¯ãããå Žåã¯ãã¿ã°ã®çµã¿åãããããŽã·ãšãŒãããŠè¡ããŸãã ç解ã§ããªãã¢ãã¬ãŒã¿ãŒã«ãã£ãŠããããªãã¯ã«ãŒããä¹±éã«ããŸãã誰ãããªãã®ä»äºãå¿ èŠãšããŸããããšããã³ã¡ã³ãã§ããªãã®å¿ã«å€§åãªããŒã¿ãåãåã£ãŠããã©ã ãªãã§ïŒãŸããã»ãšãã©ïŒã
åœç¶ãéçºè ã«ãšã£ãŠãã®ãããªããªãŒã·ããã¯ç°¡åã«æªå€¢ã«å€ãããŸãã
äœæ
ç§ãã¡ã®ã»ãšãã©ã¯ã1ã2éœåžãå€ããŠç掻ããŠããŸãããããŸããŸãªéµéã¹ããŒã ã«æ³šæãæãæéã¯ãããŸããã
ããã¯å°ããªãã®ããå§ãŸããŸã-ã¢ãã¬ã¹ãæžãçããããšã«ãã£ãŠïŒå€§ãããã®ããå°ãããã®ãžããŸãã¯å°ãããã®ãã倧ãããã®ãžã
次ã«ãäžéšã®éœåžã§ã¯äœæãäœæã§äœ¿çšãããŠããªãããšãããããŸãã
家521ãã³ãã«ãã¢ã³ããã°ããŸãã¯ãã·ã¢é£éŠããšãã«ã²ãã£ã¯ã®å®¶15ã
ãã®1ã€ã®å®¶ã«ã¯è€æ°ã®äœæããããŸãã
äžçæé«ã®éœåžããã€ã¬ã¯ãã¹ããªãŒãã22ã圌ã¯äžçæé«ã®éœåžãåçŽã¹ããªãŒãã12
ãã®äºéã¢ãã¬ã¹æå®ã¯ã³ãŒããŒããŠã¹ã ãã§ãªãã2ã€ã®ã¢ãã¬ã¹ã¯å¶éããã¯ã»ã©é ããã®ã§ãã
ã¿ãªã³ã«ã·ã¥ã¿ããã€éã13ã15ã17
ã¿ãªã³ãã§ãªãŒã¹ããªãŒã1ã3
*äŸã¯ç§ã®äººçããéåžžã«çŸå®çã§ãããå ã®ã¹ããªãŒãåãå¿ããŠããŸããŸããã
家èªäœã ãã§ãªããçé¢ãããã«ã¯å®¶ã®å€ã«çŸããéšåã«ã察åŠã§ããããšã ïŒããã¯ã¿ãªã³ã®äŸããã®ãã®ã§ã-åã建ç©å ã®åãéãã®äœæã¯ããã€ãŠã¯ç°ãªãææè ã«å±ããŠããå éšã»ã¯ã·ã§ã³ã§ãïŒã
ãããŠæåŸã«ããã¹ãŠã®ãšããŸããã¯ãª
ããŒãã¬ãžãã€ã§ã»ãã§ã«ããŒã11/1
ããã¯11ã®äœå® å£å°ã家1ã§ããå®éãäœåšæ³¢ã®å®¶ã«ã¯ã¿ã€ãHouse Streetã®éåžžã®äœæããããŸãããå°å ã®äººã¯ãããã䜿çšããŸããã
ããã«æ¬¡ãæããŸãïŒ
OSMã§å Žæãæå®ãã4ã€ã®æ ¹æ¬çã«ç°ãªãæ¹æ³
3-4ãã«ããã£ã¹ããæå®ããæ¹æ³
çªå°ãæå®ãã3ã€ã®æ¹æ³
ããã«ãããŒã¿ãå ¥åããå Žåã¯ããã®åç©åã®ããã€ãã®ã¹ããŒã ã䜿çšããã ãã§ãã é©åãªãžãªã³ãŒããŒãäœæããå Žåã¯ããã®åç©åã®ååšãæãåºãã ãã§ã¯äžååã§ãããèšç®ãããå¿ èŠããããŸãã
ããšãã°ã家-éœåžãšäžèŽãããããã«äœãå¿ èŠããèŠãŠã¿ãŸãããã
ãããžã§ã¯ãã®æ¯åœã§ããè±åœããå§ããŸãããã
ããšãã°ããŠã§ã¹ããã³ã¹ã¿ãŒã®å®¶ã www.openstreetmap.org/way/46138969
addr:housenumber 1 addr:street Derby Gate building yes
ãŠã§ã¹ããã³ã¹ã¿ãŒèªäœã¯æ¬¡ã®ããã«ããŒã¯ãããŠããŸãã
name Westminster name:ru place town
èŠããŠããã¹ãããéèŠãªã®ã¯ãã¢ãã«ããã³ãã³ã®ã»ãŒäžå¿ã§ãããšããããšã§ãã ãã³ãã³ã¯åºæ¬çã«æ°åã®å°ããªçºã§æ§æãããŠããŸãã 家ã¯ã©ã®éœåžã«å±ããŸããïŒ ãã³ãã³ãžããããšããŠã§ã¹ããã³ã¹ã¿ãŒãžïŒ
å®éããã®è³ªåã«æ確ã«çããããšã¯äžå¯èœã§ãã建ç©ã¯æ£åŒã«ã©ã®éœåžãæããŠããã®ãã瀺ãããŠããªãããã§ãã ããããäŸãã°ãç§ã«ãšã£ãŠã¯ãããã³ãã³ãããŒããŒã²ãŒãã1ããšããŠã§ã¹ããã³ã¹ã¿ãŒãããŒããŒã²ãŒãã1ãããã³ããã³ãã³ããŠã§ã¹ããã³ã¹ã¿ãŒãããŒããŒã²ãŒãã1ãã®äž¡æ¹ã®èŠæ±ã§ãåªãããžãªã³ãŒããŒããã®å®¶ãèŠã€ããå¿ èŠãããããšã¯æããã§ãã
å®è£ ãèŠããšãå家ïŒäœæãã€ã³ãïŒã«è©²åœãããã¹ãŠã®å€è§åœ¢ã®å¢çïŒããã§æå®ãããŠããå Žåã¯éœåžã®å¢çïŒãšè¿é£ã®éèœã®é åã«ãããã³ã°ããŸããããã§ã¯ãã³ãã³ãæãè¿ãéœåžããŠã§ã¹ããã³ã¹ã¿ãŒãæãè¿ãçºã§ãããŸã 圌ãã®é£äººã
elasticsearchã®jsonããŒã¿ã¹ããŒãã§ã¯æ¬¡ã®ããã«ãªããŸã
// "nearby_places": { "properties": { "id": { "type": "string" }, "place": { "type": "string" }, "name": { "type": "string" }, "alt_names": { "type": "string" } } }, // , , "locality_name": { "type": "string" }
ãããã£ãŠãæ€çŽ¢ããå ŽåãèŠæ±ã«å¿ããŠã©ã®éœåžã§ã家ãèŠã€ããããšãã§ããŸãããéãã¯æ£ç¢ºã«äžèŽããéœåžãšè¿é£ã®éœåžã®é¢é£æ§ã®ã¿ã§ãã åãå¿ èŠãã¯ã1ã€ãŸãã¯2ã€ã®ç©ºéçµåã§ãã
ãžãªã³ãŒããŒ
æåãªãªã¹ããŒãºãŽã§ãªã¯ãèšã£ãããã«
ãæè¿ã誰ãã次ã®ãžãªã³ãŒããŒãããŠããããšãããŠããã ãã§ããã
ç§ãäŸå€ã§ã¯ãããŸããïŒèª°ãããžãªã³ãŒããŒãæžããŠããŸããããªãç§ãæªãã®ã§ããïŒ ãžãªã³ãŒããŒ
äœæã«é¢ããŠOSMã«äœãæ±ããŠããŸããïŒ
- csvãŸãã¯sqliteã§ã¢ãã¬ã¹ãã¢ããããŒãããŠãã ãã
- 100,500åã®äœæã®ãªã¹ãããžãªã³ãŒãã£ã³ã°ããŠãã ãã
- ãªã³ã©ã€ã³ãžãªã³ãŒãã£ã³ã°ãµãŒãã¹ïŒOSMã«ã¯ãªã³ã©ã€ã³ãžãªã³ãŒããŒãããããããã®ã¢ã€ãã ã¯ãããããããŸããïŒ
- 家ãçµç¹ã®äœæãå ¥åããŸãããããªããªã³ã©ã€ã³ãžãªã³ãŒããŒã§èŠã€ããããªãã®ã§ããïŒ
- OSMããŒã¿ã䜿çšããããŒã«ã«æ€çŽ¢ãšã³ãžã³ã欲ããã®ã§ãããäœããå§ãããŸããã
éåžžãçãã¯æ¬¡ã®ããã«å§ãŸããŸãã
- postgresãpostgisãå¿ èŠã«ãªããŸãïŒéåžžã90ïŒ ãã¯ãšã¹ãã®ãã®éšåãééããŸãïŒ
- osmosisãŸãã¯osm2pgsqlã䜿çšããŠãã®ããŒã¿ããŒã¹ã«OSMããŒã¿ãããŒãããå¿ èŠããããŸããçªç¶ææèŠæš¡ã«çŠç¹ãåãããããšã決ããå ŽåãRAMïŒ16-32ã®ã¬ãã€ãïŒãšå¿èïŒå€ãã®äœæ¥å¡ãããå Žåã¯æ°æ¥ã RAMã¯ååã§ã¯ãããŸããïŒã ãŸããåœã¯ããŸãéããªããéã«ããŸãå¿ å®ã§ã¯ãããŸããã
- post-sinã¹ã¯ãªããã䜿çšããŠããŒã¿ãåŠçããŸãã ïŒåžæããçµæã«å¿ããŠãOSM-stoicsã®ããŒã¿åŠçã«é£çµ¡ããã10ïŒ -20ïŒ ãæ®ã£ãŠããŸããïŒ
- ã¢ãã¬ã¹ã䜿çšããŠããŒã¿ããŒã¹ã«æ€çŽ¢ãè¿œå ããããcsv / jsonã§å¿ èŠãªæ€çŽ¢ãã¢ããããŒãããŸã
ãŠãããå šäœãã¯ãšã¹ããå®äºããŸãã ãžãªã³ãŒããŒã«åæ°æ©èœãè¿œå ãããšããã¹ããšã©ãŒã§å°ç空éçµåãåŠçããã®ã«æ°æéãŸãã¯æ°æ¥ãããããã¹ããšã©ãŒã§å¿ èŠãªæ°ããããŒã¿ãããŒãããã®ã«ã®ã¬ãã€ãã®RAMãå¿ èŠã§ãã
ãããŠããã·ã¢é£éŠã§ã¯éœåžã®åãç«ãŠå°ã«å ¥ãããšã§å®¶åºã®éœåžãæ€èšããã®ãæ £ç¿ã§ãããè±åœã§ã¯-éèœã®ããããã®å°ç¹ã®è¿ãã§ããã·ã¢é£éŠã§æ¡çšãããéœåžå¢çãè±åœã®ãããã€åãç«ãŠå°+é£äººã®äž¡æ¹ãå¿ èŠã§ãããããã¯ãã¹ãŠæ··ä¹±ããŠããŸãã ç®ã¯è¡ã§æºããããŠããã次ã®å¯ŸåŠæ¹æ³ã¯ãããããã®é¢ä¿ã«åºã¥ããŠãææ ã®çªé¢šãåŒãèµ·ãããŸãã
ãžãªã³ãŒãã£ã³ã°ã¯ã2ã€ã®ã»ãŒç¬ç«ããã¿ã¹ã¯ãšèŠãªãããšãã§ããŸãã
- ããŒã¿ãååŸããããã®ãã¹ãŠã®ãªããžã§ã¯ãïŒäœæãéããéœåžãé¢å¿ã®ãããã€ã³ãïŒã«ã€ããŠïŒéœåžã®å¢çãè¿é£ã®éœåžãã€ã³ããåšå²ã®éè·¯ã
- ãã®ããŒã¿ã䜿çšããŠæ€çŽ¢ãæŽçããŸãã æãåçŽãªå Žåãããã¯å šææ€çŽ¢ã§ãã
åé¡1ã®è§£æ±ºã«éäžããŸãã-æ€çŽ¢ã€ã³ããã¯ã¹ã«é©ãã圢åŒã§ããŒã¿ãååŸããŸãã ååãšããŠãGoogleãŸãã¯yandexã®ã€ã³ããã¯ã¹äœæçšã«ãã®ããŒã¿ãæäŸããã®ã§ããžãªã³ãŒããŒã®2çªç®ã®éšåãå€éšå§èšã§ããŸãã
è©Šè¡çªå·1
ç§ã®æåã®è©Šã¿ã¯ããã«ãããŸãã github.com/kiselev-dv/osm-addresses-pgsql
åçŽåãããããŒã¿ãpostgresã«ããŒããããã®åŸãããŸããŸãªããªãã¯ã䜿çšããŠåŠ¥åœãªæéå ã«ä¿æããããããåŠçããŸãã
éçºããã»ã¹äžã«ãJavaã§ãžãªã¡ããªãåŠçããå®æãããžãªã¡ããªãpostgresã«ããŒãããæ¹ãé«éãã€æè»ã§ããããšãå€æããŸããã
èšç®å¹ŸäœåŠã«ãããèšç®ã®è€éã
éåžžã誰ãèšäºã®éäžãèªã¿ãŸãã;æãããªããŒãããžãŒãéå±ãªèªè ãå æ°ã¥ããããšãé¡ã£ãŠããŸãã
zip xmlã«ããã±ãŒãžããã2ã®ã¬ãã€ãã®ããŒã¿ãããŠã³ããŒãããã®ã«6ã®ã¬ãã€ã以äžã®RAMãå¿ èŠãªã®ã¯ãªãã§ããïŒ
OSMããŒã¿ã«ã¯å®å šãªãžãªã¡ããªãå«ãŸããŠããããå°çåç §ãæã€å¯äžã®OSMãªããžã§ã¯ãã¯ãã€ã³ãã§ãã ïŒããŒã¿ã®æ£èŠåã ãã§åå©ïŒãããã£ãŠããžãªã¡ããªãååŸããã«ã¯ãã©ã€ã³ããid'shnikovãªã¹ããããã€ã³ããããŒãããå¿ èŠããããŸãã å®éãã¡ã¢ãªã®äž»ãªéã¯ãã€ã³ãã®ã€ã³ããã¯ã¹ãæ¶è²»ããŸãã ããäžåºŠãã£ã¹ã¯ã«ç»ããªãããã«ãéåžžã¯ã¿ã°ãä¿åãããŸãã çŸåšãææã®ãã³ãã«ã¯çŽ30åãã€ã³ããå«ãŸããŠãããããã«ã€ã³ããã¯ã¹ã«ãã€ã³ããä¿åããããã®ãªãŒããŒããããè¿œå ãããéåžžã®ããŒã ã³ã³ãã¥ãŒã¿ãŒã§ã¯JavaHeapSpaceã倱æããŸãã
ããããã¹ãŠç®¡çããŠããŒã¿ããŒã¹ã«ããŒããã幟äœåŠçãªã€ã³ããã¯ã¹ãåéãããšããŸãã ã¯ãšãªã®å®è¡ãé«éåããæ¹æ³ã¯ïŒ
äœæ¥ã®å€§éšåã¯ãã€ã³ããã±ãŒã·ã§ã³ã®åé¡ã§ãã ã€ãŸãããã·ã¢é£éŠã®äŸã䜿çšããŠã50äžã®å¢çããªãŽã³ã§150äžã®ãã€ã³ãã®çºçãèšç®ããå¿ èŠããããŸãã ããšãã°ããã·ã¢é£éŠã®åœå¢ã«ã¯40,000ã®ã»ã°ã¡ã³ããå«ãŸããŠããããšãç解ããããšãéèŠã§ãã å¢çç·ã«å ¥ãããã«ã¯ã100äžãã€ã³ãå šäœããã§ãã¯ããå¿ èŠããããŸãã ã€ã³ããã¯ã¹ã®ååšã«ãããããããè€éãã¯OïŒN * MïŒã§ãã Postgisã¯ãã€ã³ããã¯ã¹ã䜿çšããŠã100äžã®ã¢ãã¬ã¹ãã€ã³ãã®ãã¡ãã€ã³ãnããã·ã¢é£éŠã®å¢çå ã«ããå¯èœæ§ãããããšããã°ããå€æãããã®åŸãããªãŽã³å ã®ãã€ã³ããæ£ç¢ºãã©ãããå€æããŠãMåã®ã¹ã«ã©ãŒç©ãèšç®ããŸãïŒMã¯å¢çããªãŽã³ã®ã»ã°ã¡ã³ãã®æ°ã§ãïŒã
ãã®äºå®ãå®çŸãããŸã§ã«ãç§ã¯ãã§ã«ã»ãŒãã¹ãŠã®æºåäœæ¥ãè¡ã£ãŠããŸãããè¡æ¿å¢çã®ããªãŽã³ã®è§£æãé路圢ç¶ã®ååŸãšç°¡çŽ åãJava Topology Suiteã䜿çšããJavaã®äœæãæã€å®¶ã®åœ¢ç¶ã®ååŸã§ãã www.vividsolutions.com/jts/jtshome.htmã€ãŸããç§ã¯åºæ¬çã«ç©ºéçµåãããŸãèšç®ããããã«ããŸãäžè¬çãªIOãã¬ãŒã ã¯ãŒã¯ãšããŠäœ¿çšãããŠããŸããã
postgisã䜿çšããéã®ãã1ã€ã®ããã«ããã¯ã¯ãã¯ãšãªå®è¡ã®äžŠååã®é£ããã§ãã ãã®å Žåã1ç§ãããæ°çŸã®ãªã¯ãšã¹ãã¯ãããŸããããæ°æéã«ããã£ãŠ1ã€ã®ã·ãã¯ãªã¯ãšã¹ãããããŸãã
æé«ã®èªè»¢è»ãè©Šè¡çªââå·2
å®éãããŒã¿åŠçã®è€éããæããšããââç§ã¯å°ãå¿ã奪ãããŸãã ããšãã°ãOSMã³ãã¥ããã£ã¯ãããããããŸããŸãªããã²ãŒã·ã§ã³ããã°ã©ã ã®åœ¢åŒã«å€æããããšãã§ããŸãã åå è ã®å°çšãµãŒããŒãšéåžžã®ããŒã ã³ã³ãã¥ãŒã¿ãŒã®äž¡æ¹ã䜿çšããŠããããæ¯æ¥è¡ããŸãã
åæã«ããã·ã¢ã®ã³ãã¥ããã£ã¯ãããŒã«ã«ã®è©³çŽ°ããã€ãã®ã³ãã¥ããã£ãèæ ®ã«å ¥ããŠãç¬èªã®OSMããŒã¿ãåŠçããŸãã
2åç®ã®è©Šã¿ã§ãç§ã¯åæ§ã®éããã©ãããšã«æ±ºããŸããã ç§ã¯ãã»ãšãã©ã®OSMãèªå® ã®PCã§äœ¿çšã§ããã¢ããªã±ãŒã·ã§ã³ãäœæããããšã«ããŸããã
ããã«å¿ èŠãªãã®ïŒ
- æãéèŠãªããšã¯ãã€ã³ã¹ããŒã«ã®å®¹æãã§ãã 誰ãããªãã®ããã«ç°å¢ãèšå®ãå§ããããè¿œå ã®ã©ã€ãã©ãªãããŒã¿ããŒã¹ãšã³ãžã³ãã€ã³ã¹ããŒã«ãããããŸããã ïŒããããªãpostgresïŒ
- ã«ã¹ã¿ãã€ãºããæ©èœã ã³ãã¥ããã£ã«æ¯æŽããŠãããããå Žåã¯ãã³ãã¥ããã£ã«èæ ®ããŠå°å ã®äŒçµ±ãæ £è¡ãå®æœããæ©äŒãäžããŠãã ããã
- ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã ç¹°ãè¿ãã«ãªããŸãããå°å ã®ã³ãã¥ããã£ã«ããªãã®ããŒã«ã§å¹ åºãã¿ã¹ã¯ã解決ãããŠãã ããã ããŒã«ã«ã³ãã¥ããã£ãå¿ èŠãšãã圢åŒã§ã¢ãã¬ã¹ã¬ãžã¹ããªã®ã¢ã³ããŒããè¡ãæ©äŒãäžããŸãã
ãªããªã No. 1ãè©ŠããåŸããã§ã«ããçšåºŠã®çµéšããããŸãããjavaã®ã¿ã䜿çšããŠpostgisã«å®è£ ããããã»ã¹ãéšåçã«ç¹°ãè¿ãå¿ èŠããããŸããã å®éãJTSã«å®è£ ãããŠãã空éã€ã³ããã¯ã¹RTreeãšQuadTreeã®ã¿ãå¿ èŠã§ãã ãããŠããžãªã¡ããªãšã©ã€ã³äžã®ãã€ã³ããåé¢ãããªã©ããžãªã¡ããªãæäœããããã®ããã€ãã®å®çšçãªæ¹æ³ã
ãã®ãããOSMããŒã¿ã2段éã§åŠçããŸãã
1 OSMãã¡ã€ã«ãããžãªã¡ããªãååŸããæçã«ã«ããããŸã-å¹ 0.1床ã®ã¹ããªããã ããã«ãããã¿ã¹ã¯ãèªç¶ã«ããŒãã«åå²ããåæã«å¢çã®ãžãªã¡ããªãç°¡çŽ åã§ããŸãã ã€ãŸãã40,000ã®ã»ã°ã¡ã³ããæã€ãã·ã¢é£éŠã®1ã€ã®å¢çã®ä»£ããã«ã1ããŒã¹ã®ã»ã°ã¡ã³ããæã€å1,500åã®ããŒã¹ââãååŸããŸãã åã¹ããªããã®å¢çç·ããªãŽã³ã®æ°ãæ°åã®é åã«ãªããŸãã
2第2段éã§ã¯ããã€ã³ããå¢çã®ããªãŽã³ã«å ¥ãããšãæåŸ ããæãè¿ãéããæãè¿ãéœåžãæ¢ããŸãã åãã¹ããªãããã¯ããããåå¥ã«åŠçããããã®ã¹ããŒãžã¯ã¹ã¬ãã/ããŒãéã§äžŠååãããŸãã
ãã®çµæãèå³ã®ãããã€ã³ããéããéœåžãåœå¢ã家ã®JSONèšè¿°ãååŸããŸãã
ããã¯ãPOIã®èª¬æãã©ã®ããã«èŠãããã§ã
{ "id": "poipnt-3372930671-n600379459", "ftype": "poipnt", "timestamp": "2014-05-14T15:22:11.785Z", "poiTypes": ["police"], "boundaries": { "index_name": ", , ", "text": " , , ", "langs": [], "longText": " , , , ", "boundariesHash": -410546539, "parts": [{ "lvl": "boundary:2", "names": { // "int_name": "Russia", "official_name": " ", "name": "" }, "lnk": "admbnd-2864649470-r60189", "name": " ", "lvl-size": 130 }, { "lvl": "boundary:4", "names": { "name:en": "Nizhny Novgorod Oblast", "name:ru": " ", "name": " ", "name:de": "Oblast Nischni Nowgorod" }, "lnk": "admbnd-3018389977-r72195", "name": " ", "lvl-size": 110 }, { "lvl": "boundary:6", "names": { "name:ru": " ", "name": " ", "official_name": " " }, "lnk": "admbnd-3704710510-r2031968", "name": " ", "lvl-size": 90 }, { "lvl": "place:town", "names": { "name:hu": "Szarov", "name:en": "Sarov", "name:ru": "", "name:pl": "Sarow", "name": "", "name:de": "Sarow" }, "lnk": "plcbnd-3118671325-r1428992", "name": "", "lvl-size": 70 }] }, "properties": { "name": "", "amenity": "police" }, "type": "Feature", "metainfo": { "id": 600379459, "type": "node" }, "geometry": { "type": "Point", "coordinates": [43.323823, 54.935209] } }
家ã®èª¬æïŒäœæïŒã¯æ¬¡ã®ããã«ãªããŸã
{ "id": "adrpnt-0642964090-w129096772", "ftype": "adrpnt", "timestamp": "2014-05-14T15:31:38.778Z", "nearbyStreets": [{ "id": "hghway-3750745956-w128994466", "properties": { "highway": "unclassified", "name": " " } }, { "id": "hghway-1683350308-w129293134", "properties": { "kladr:user": "87005000001000100", "surface": "concrete", "highway": "tertiary", "name": " ", "oneway": "no" } }, { "id": "hghway-0059099168-w129293131", "properties": { "highway": "unclassified", "name": " " } }, { "id": "hghway-0069632087-w129293121", "properties": { "kladr:user": "87005000001000100", "surface": "concrete", "highway": "tertiary", "name": " ", "oneway": "no" } }, { "id": "hghway-4111943004-w128995822", "properties": { "highway": "residential", "name": " " } }], "properties": { "building": "yes", "building:levels": "2", "sport": "swimming", "amenity": "swimming_pool", "addr:street": " ", "addr:housenumber": "14" }, "nearestCity": { "id": "plcdln-2842041450-n1575069719", "properties": { "name:fr": "Providenia", "addr:postcode": "689251", "name:ru": "", "name:en": "Provideniya", "name:nl": "Providenia", "name:pl": "Prowidienija", "name:it": "Providenija", "name:es": "Providéniya", "addr:country": "RU", "name": "", "name:de": "Prowidenija", "addr:region": " ", "place": "town" } }, "type": "Feature", "addresses": [{ "index_name": " 14, , , , , ", "text": " , , , , , 14", "langs": [], "longText": " , , , , , , 14", "parts": [{ "lvl": "postcode", "name": "", "lvl-size": 55 }, { "lvl": "boundary:2", "names": { // }, "lnk": "admbnd-2864649470-r60189", "name": " ", "lvl-size": 130 }, { "lvl": "boundary:3", "names": { "name:sv": "FjÀrran österns federala distrikt", "name:en": "Far Eastern Federal District", "name:ru": " ", "name:ja": "極æ±é£éŠç®¡åº", "name:es": "Distrito federal del Lejano Oriente", "name:de": "Föderationskreis Ferner Osten", "short_name": "", "name:vi": "Vùng liên bang Viá»
n ÄÃŽng", "name:pt": "Distrito Federal Oriental", "name:fr": "District fédéral extrême-oriental", "name:uk": "Ñ ", "name:nl": "Federaal District Verre Oosten", "name:zh": "é æ±è¯éŠç®¡å", "name:it": "Distretto Federale dell'Estremo Oriente", "name:pl": "Dalekowschodni OkrÄg Federalny", "name": " " }, "lnk": "admbnd-2969582277-r1221185", "name": " ", "lvl-size": 120 }, { "lvl": "boundary:4", "names": { "name:sv": "Tjuktjien", "name:en": "Chukotka Autonomous Okrug", "name:ru": " ", "name:ja": "ãã¥ã¯ãèªæ²»ç®¡åº", "name:es": "Chukotka", "name:de": "Autonomer Kreis der Tschuktschen", "short_name": "", "name:vi": "Khu tá»± trá» Chukotka", "name:fr": "Tchoukotka", "name:uk": " ", "name:nl": "Tsjoekotka", "name:zh": "æ¥ç§å¥èªæ²»åº", "name:it": "Circondario autonomo della Äukotka", "name:pl": "Czukocki OkrÄg Autonomiczny", "int_name": "Chukotka Autonomous Okrug", "name": " " }, "lnk": "admbnd-4289483775-r151231", "name": " ", "lvl-size": 110 }, { "lvl": "boundary:6", "names": { "name:ru": " ", "name": " " }, "lnk": "admbnd-2373015928-r1949882", "name": " ", "lvl-size": 90 }, { "lvl": "place:town", "names": { "name": "" }, "lnk": "plcbnd-3753535756-w129289823", "name": "", "lvl-size": 70 }, { "lvl": "street", "strtUID": -30263303, "lnk": "hghway-1683350308-w129293134", "names": { "name": " " }, "name": " ", "lvl-size": 20 }, { "lvl": "hn", "names": {}, "lnk": "adrpnt-0642964090-w129096772", "name": " 14", "lvl-size": 10 }], "addr-scheme": "regular" }], "metainfo": { "id": 129096772, "type": "way", "fullGeometry": { "type": "Polygon", "coordinates": [ [ [-173.2301084, 64.4217729], [-173.229167, 64.4220204], [-173.2293185, 64.4221278], [-173.2298729, 64.421982], [-173.2299223, 64.4220171], [-173.2302113, 64.4219379], [-173.2300846, 64.4218517], [-173.2301819, 64.421825], [-173.2301084, 64.4217729] ] ] } }, "geometry": { "type": "Point", "coordinates": [-173.22972832, 64.42195376] } }
äžéããŒã¿ã®ã¹ãã¬ãŒãžåœ¢åŒã¯jsonïŒgzipã§å§çž®ïŒã§ãã ããã«ããããŸãããããã°ãå€§å¹ ã«ç°¡çŽ åãããŸãã åçŽãªïŒzïŒcatãïŒzïŒgrepã§äžéçµæãèŠãããšãã§ããŸãã 第äºã«ãããããã°ãµãŒãããŒãã£ã®éçºè ã®ç掻ãç°¡çŽ åããŸãã
åºåã§ã¯ãpostgis + sphynxãã³ãã«ã®csvïŒããã§ã¯postgisã¯äžèŠãããããŸãããããã®ãã³ãã«ã§ãªããŒã¹ãžãªã³ãŒããŒãå®è¡ãããšäŸ¿å©ã§ãïŒãšelasticsearchã®jsonãçæããŸãïŒãªããŒã¹ãžãªã³ãŒãã£ã³ã°ã¯elasticsearchèªäœã䜿çšããŠå®è¡ã§ããŸãïŒã
6 GBã®RAMãšçŽ5 GBã®ãã£ã¹ã¯å®¹éã§ãRFã®åŠçã«çŽ2æéããããŸãã æéãç ç²ã«ããããšã§ãããå°ãªãã©ã ã§åçž®ã§ããŸãã ç§ã«ç¥ãããŠããã¢ããã°ã¯2æ¥éãéãããŸãã
å€ãã®ã»ã¯ã·ã§ã³ã¯ãç§ã®ã¯ã©ã¹å®è£ ã䜿çšããŠã«ã¹ã¿ãã€ãºãïŒæ¡åŒµããäºå®ã®æ¡åŒµæ©èœã®æ°ïŒãgroovyã®æ¡åŒµæ©èœãè£åãããšãã§ããŸãã
ããŒã¿åŠçã¢ããªã±ãŒã·ã§ã³ã¯1ã€ã®å®è¡å¯èœjarã§ãããè¿œå ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸããã
çŸæç¹ã§ã¯ãå€ãã®ã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ãŒã䜿çšããŠèµ·åããããã®ããªãæŽç·Žãããæ§æããããŸãããå°æ¥ã¯1è¡ã®java -jar gazetteer.jar russia.configã§èµ·åããã¯ã©ã¹ã¿ãŒã®äœæ¥ããŒããšããŠããã«æ¹åããäºå®ã§ãã
èªè»¢è»github.com/kiselev-dv/gazetteerãžã®ãªã³ã¯
ç§ã¯æ€çŽ¢æè¡ãèŠæãªã®ã§ãelasticsearchã«èªã¿èŸŒãŸããæ€çŽ¢èªäœã¯ãŸã äžååã§ãã ãã®çš®ã®ããŒã¿ã®æäœãšããžãªããŒã¿ã®æ€çŽ¢ãšã³ãžã³ã®èšå®ã®å®éšã«èå³ã®ãã人ãããã«ããå Žå-ããããã
ãããžã§ã¯ãã¯2ã€ã®éšåã§æ§æãããŠããŸãã
Gazetteer-ããŒã¿åŠçã
GazetteerWeb-elasticsearchã®äžéšã«ããAPIïŒTomcatã§ã¯çŸåš-ä»åŸã¯nettyã䜿çšããäºå®ã§ãïŒ