ããã«ã¡ã¯ãHabrã®èŠªæãªãèªè
ã ãã®èšäºã¯è©±ããŸã
- ãã¡ãžãŒã¹ããŒã ã䜿çšããã¢ãã¬ã¹ãšããŒã¿ã¹ãã¢ã«ã€ããŠ
- 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/46138969addr:housenumber 1 addr:street Derby Gate building yes
ãŠã§ã¹ããã³ã¹ã¿ãŒèªäœã¯æ¬¡ã®ããã«ããŒã¯ãããŠããŸãã
name Westminster name:ru place town
èŠããŠããã¹ãããéèŠãªã®ã¯ãã¢ãã«ããã³ãã³ã®ã»ãŒäžå¿ã§ãããšããããšã§ãã ãã³ãã³ã¯åºæ¬çã«æ°åã®å°ããªçºã§æ§æãããŠããŸãã å®¶ã¯ã©ã®éœåžã«å±ããŸããïŒ ãã³ãã³ãžããããšããŠã§ã¹ããã³ã¹ã¿ãŒãžïŒ
å®éããã®è³ªåã«æç¢ºã«çããããšã¯äžå¯èœã§ãã建ç©ã¯æ£åŒã«ã©ã®éœåžãæããŠããã®ãã瀺ãããŠããªãããã§ãã ããããäŸãã°ãç§ã«ãšã£ãŠã¯ãããã³ãã³ãããŒããŒã²ãŒãã1ããšããŠã§ã¹ããã³ã¹ã¿ãŒãããŒããŒã²ãŒãã1ãããã³ããã³ãã³ããŠã§ã¹ããã³ã¹ã¿ãŒãããŒããŒã²ãŒãã1ãã®äž¡æ¹ã®èŠæ±ã§ãåªãããžãªã³ãŒããŒããã®å®¶ãèŠã€ããå¿
èŠãããããšã¯æããã§ãã
å®è£
ãèŠããšãåå®¶ïŒäœæãã€ã³ãïŒã«è©²åœãããã¹ãŠã®å€è§åœ¢ã®å¢çïŒããã§æå®ãããŠããå Žåã¯éœåžã®å¢çïŒãšè¿é£ã®éèœã®é
åã«ãããã³ã°ããŸããããã§ã¯ãã³ãã³ãæãè¿ãéœåžããŠã§ã¹ããã³ã¹ã¿ãŒãæãè¿ãçºã§ãããŸã 圌ãã®é£äººã
elasticsearchã®jsonããŒã¿ã¹ããŒãã§ã¯æ¬¡ã®ããã«ãªããŸã
ãããã£ãŠãæ€çŽ¢ããå ŽåãèŠæ±ã«å¿ããŠã©ã®éœåžã§ãå®¶ãèŠã€ããããšãã§ããŸãããéãã¯æ£ç¢ºã«äžèŽããéœåžãšè¿é£ã®éœåžã®é¢é£æ§ã®ã¿ã§ãã åãå¿
èŠãã¯ã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": {
å®¶ã®èª¬æïŒäœæïŒã¯æ¬¡ã®ããã«ãªããŸã { "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": {
äžéããŒã¿ã®ã¹ãã¬ãŒãžåœ¢åŒã¯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ã䜿çšããäºå®ã§ãïŒ