ããã«ã¡ã¯Habrã仿¥ã¯äŒæ¥ãšB2Bã§ã®osmã®äœ¿çšã«ã€ããŠå°ãã話ãããŸãã
ã€ãŸããGoogleãããAPIããOSMããªãŒãã³ã¬ã€ã€ãŒã幞çŠã«åãæ¿ããæ¹æ³ãšçç±ã§ãã
ééããªãæåã«çºçãã質åïŒãªãã§ããïŒ
ãŸããéå
¬éãµãŒãã¹ã§ã®GoogleãããAPIã®äœ¿çšã¯ãå©çšèŠçŽã«ãã£ãŠå¶éãããŠããŸãã 2çªç®ïŒgoogle maps api-ããã¯ãŸãã«google maps apiã§ãããå°å³ã«äŒŒããã¹ãŠã衚瀺ããapiã§ã¯ãããŸããã ã€ãŸã å¥ã®èæ¯ã衚瀺ãããããµãŒããŒã«ãã£ãŠãšã³ã¿ãŒãã©ã€ãºã®ããŒã«ã«ãããã¯ãŒã¯ã«æç»ãããã©ã¹ã¿ãŒã¬ã€ã€ãŒã远å ãããå Žåã¯ãæŸèæãã¹ã«ã«ããããæºåãããŠãã ããã ããŠãAPIã«äœããå«ãŸããŠããªãå Žåã远å ããã®ãèŠçã«ãªãããšãèŠæããŠãã ããã 3ã€ç®ïŒããããå°å³ããŒã¿ãååŸããããšã¯ã§ããŸãããåŸæ¥å¡åãã®ããŒã«ã«å°å³ãµãŒãã¹ãäœæããããšãã§ããŸããã ã€ãŸããGoogleãããã¯åã¯ã©ã€ã¢ã³ããã·ã³ããå©çšã§ããå¿
èŠããããŸãã å¥åŠã«èãããŸãããåŸæ¥å¡ã¯åžžã«å€éšãããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ã§ããŸãã
ç§ãããªããçŽåŸããããšããŸãããã ã©ãããå§ããŸããïŒ
ãŸããã«ãŒãããªãŒãã³ã¬ã€ã€ãŒã«å·®ã蟌ã¿ãŸãã ãã¹ãŠãã·ã³ãã«ã§ãã°ãŒã°ã«ãã€ã³ããã¯ã¹ããªãŒãã¬ãããšå€§å·®ãããŸããã
å€§äŒæ¥ã¯ãå€ãã®å ŽåãããããµãŒããŒãšã«ãŒãã賌å
¥ããwmsãŸãã¯tmsãä»ããŠããŒã«ã«ãããã¯ãŒã¯äžã§é
åžã§ããŸãã WMSããã³TMSã¯ããããç»åã®ã¹ã©ã€ã¹ãååŸã§ããæšæºã§ãã äž»ãªéãïŒwmsã§ã¯ãä»»æã®çž®å°ºã®ãââããã®ä»»æã®ããŒã¹ãèŠæ±ã§ããŸããtmsã§ã¯ã瞮尺ã®ã»ãããšããããæ£æ¹åœ¢ã«åå²ããŸããããã¯ãåºå®ã®æ¹æ³ã§ååŸã§ããŸãã
ãããã£ãŠãwmsã®ã¬ã€ã€ãŒãäœæããè¡ã次ã®ããã«å€æŽããŸãã
TMSã®å ŽåïŒ
ãŸãã3ã€ã®ã¬ã€ã€ãŒãã¹ãŠããããã«è¿œå ããŠããããåãæ¿ããããã¬ã€ã€ãŒã®1ã€ãä»ã®ã¬ã€ã€ãŒã®äžã«è¿œå ãããããå¿
èŠã¯ãããŸããã
ãããžã§ã¯ã·ã§ã³
ããã§ãããªããèžãå¯èœæ§ãé«ãã¬ãŒãã«ã€ããŠã®ããã€ãã®èšèã
osm.orgïŒOpenLayers.Layer.OSMïŒãã1ã€ã®ãããã¬ã€ã€ãŒã远å ããŸãããããããå
šäžçã§ã¯ãªãã¢ã¹ã¯ã¯å°åãŸã§éããŠã»ãããšããŸãã ã¢ã¹ã¯ã¯ã®ç·¯åºŠãšçµåºŠãèŠãŠã代ããã«
map.zoomToMaxExtent
æžããŸã
map.moveTo(
ãããŠãç§ãã¡ã¯æµ·ã«èœã¡ãŸãã 座æšç³»ããã¹ãŠã§ãã ã¡ãŒãã«ã¬ã€ã€ãŒã®å Žåããã€ãã£ã座æšç³»ã¯EPSGïŒ900913ã§ãã åºæºç¹ã¯ã°ãªãããžååç·ãšèµ€éã®äº€ç¹ã§ãåäœã¯ã¡ãŒãã«ã§ãã ãããã£ãŠãåºæºç¹ããæ±ãž37ã¡ãŒãã«ãåãž55ã¡ãŒãã«ã§ããã
誰ããç¥ã£ãŠããçµåºŠãšç·¯åºŠã¯ãEPSGïŒ4326ã§æå®ãããŠããããšãæå³ããŸãã ãããã£ãŠã座æšãåèšç®ããå¿
èŠããããŸãã
map.moveTo(
äžçã«å€ãã®åº§æšç³»ããããšããäºå®ã¯ããªãŒãã³ã¬ã€ã€ãŒã§åº§æšãèšå®ãããšãã«èŠããŠãããšè¯ãã§ãããã ããã«ããé çã®çš®ã«ãªããŸããã顧客ããšããŸããã¯ãªãã®ïŒããšãã°Pulkovo 42ïŒã䜿çšããŠããå Žåã顧客ããŒã¿ãæäœã§ããŸãã
ãããè¡ãã«ã¯ãproj4jsïŒ
trac.osgeo.org/proj4js/wiki/Download ïŒãæ¥ç¶ããæ¬¡ã®è¡ã远å ããŸã
Proj4js.defs['EPSG:28403'] = '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 ' + '+x_0=500000 +y_0=0 +no_defs +a=6378140 +rf=298,257223563 +units=m ' + '+towgs84=28.000,-130.000,-95.000 +to_meter=1';
ããã§ã座æšãåèšç®ãããšãã«æ°ããæåœ±ãæå®ã§ããŸãã
ããã¯Pulkovo 42ã§ã¯ãããŸãããããã©ã¡ãŒã¿ãŒãå°ã調æŽããã ãã§ãä»ã®åº§æšç³»ã®ã¬ã€ã€ãŒã®äžã«ããŒã¿ãé垞衚瀺ã§ããŸãã
ã¬ã€ã€ãŒã远å ããŠè¡šç€ºããæ¹æ³ãããã£ãã®ã§ã次ã«ããŒã«ãŒãã©ã€ã³ãã€ãã³ãåŠçã«é²ã¿ãŸãããã
ããŒã«ãŒ
å±€ã«ã¯2ã€ã®ã¿ã€ãããããŸãã
HTMLïŒOpenLayers.MarkerïŒããã³ãã¯ã¿ãŒïŒOpenLayers.Geometry.PointïŒã åŸã§ãããŒã«ãŒãäœãæå³ããã®ãããªããã€ã³ãã説æããã®ãã
HTMLããŒã«ãŒã¯ã1ã€ä»¥äžã®divãäœæããŸããdivã¯ãç»åãé
眮ãã座æšã«åŸã£ãŠå°å³ã®äžã«é
眮ãããŸãã Googleãããäžã®ããŒã«ãŒãã©ã®ããã«æ©èœããããFirebugãä»ã®ãããã¬ãŒã§èŠãããšããããªãããã¹ãŠã«ç²ŸéããŠããã§ãããã ãããã¢ããã¯æ¯èŒçç°¡åã«æ¥ç¶ã§ããjQueryããïŒhtmlãªããžã§ã¯ããããã®ã§ïŒäœ¿ãããããããã«ãããããããã©ã€ãã©ãªã®äœæè
ã¯ãããã®äœ¿çšãæšå¥šããŠããŸããã ãªãã§ïŒ ãããã¯ããã¶ãéãã§ããããŒã«ãŒã1ã€ããå Žåã¯ãã¹ãŠãæ£åžžã§ã1000ãæªãå Žåã¯ãã¹ãŠæ£åžžã§ãã ãããã¯ãolã§æ¡çšãããŠããããŒã¿ã¹ãã¬ãŒãžãšãã£ã¹ãã¬ã€ã®äžè¬çãªæŠå¿µããå€ããŠããŸãã ãŸããå®çšçãªçç±ããïŒç§ã¯é¹¿ãšä»äºãå§ãããšãããã®ãããªããŒã«ãŒã®ãã©ãã°ã³ã³ãããŒã«ã¯ãããŸããã§ããã ãããã圌ã¯ãŸã ããŸããã
ãã ãããããã«ããŒã«ãŒã远å ããã³ãŒãã¯æ¬¡ã®ãšããã§ãã
ã¯ããããŒã«ãŒä»ãã®è€æ°ã®ã¬ã€ã€ãŒãååšããå ŽåããããŸãã ã¯ããã¬ã€ã€ãŒã®å¯èŠæ§ãå¶åŸ¡ããå¿
èŠã«å¿ããŠããŒã«ãŒã®ã°ã«ãŒããé衚瀺ã«ããããšãã§ããŸãã
次ã«ããããã®ãã¯ãã«ããŒã«ãŒã«ã€ããŠãããã³ãããŒã¿ã®ä¿åãšè¡šç€ºã®æŠå¿µãã«ã€ããŠèª¬æããŸãã
ãããã§ç°ãªãã©ã¹ã¿ãŒã¬ã€ã€ãŒã衚瀺ããã ãã®æ©èœã«æºè¶³ããŠãã人ã¯ã»ãšãã©ããŸããã ãããã®äžã«ããªãã®ãŠããŒã¯ãªããŒã¿ã衚瀺ããããšã®äž»ãªé
åã ãã®ãããå
ã±ãŒãã«ãé
ã±ãŒãã«ãããã³ãã®è¯åããããäžãééãããŠã§ã«/ããŒã«ã衚瀺ãããšããŸãã åãªããžã§ã¯ãã«ã¯ã幟äœåŠçæ
å ±ïŒã±ãŒãã«ãå®éã«ééããæ¹æ³/ããŒã«ãŸãã¯ãŠã§ã«ã®äœçœ®ïŒãšå±æ§ïŒã±ãŒãã«ã¿ã€ããã±ãŒãã«ã³ã¢ã®æ°ãä¿¡å·æžè¡°ãããŒã«ã®é«ã...ãªã¹ããç¡éã«è£å
ã§ããŸãïŒãå«ãŸããŸãã å®éããã®ã¢ã€ãã¢ã¯å±€ã«çŽæ¥å®è£
ãããŠããŸãã
ãªããžã§ã¯ã-ãOpenLayers.Feature.Vectorãã¯ããã®å±æ§ããžãªã¡ããªãããã³ãªãã·ã§ã³ã§è¡šç€ºã¹ã¿ã€ã«ãšãšãã«ä¿åãããŸãã
ãã€ã³ããã£ãŒãã£ã®å ŽåïŒ
new OpenLayers.Feature.Vector(
ã¹ã¿ã€ã«ã«é¢ããããã€ãã®èšèã
ã¹ã¿ã€ã«ã§ã¯ããªããžã§ã¯ãã®å±æ§ã䜿çšããŠããžãªã¡ããªã®è¡šç€ºæ¹æ³ãæå®ã§ããŸãã ã¿ã€ãã«å¿ããŠãããŸããŸãªã¢ã€ã³ã³ã䜿çšã§ããŸããããšãã°ãåã§äºæžãæããåã§ãµããŒãããŸãã å¡ãã€ã¶ãã®è²ã倪ããç·ã®è²ãå®çŸ©ã§ããŸãã 屿§ã«åºã¥ããŠããªããžã§ã¯ããªã©ã®ããã¹ãã©ãã«ã衚瀺ã§ããŸãã ç¹å®ã®ãªããžã§ã¯ãã®ã¹ã¿ã€ã«ãèšå®ã§ããŸããããšãã°ãã¹ã¿ã€ã«ãã¬ã€ã€ãŒã«å²ãåœãŠãŠãã¬ã€ã€ãŒå
ã®ãã¹ãŠã®ãªããžã§ã¯ããããã«å¿ããŠè¡šç€ºãããããã«ããããšãã§ããŸãã
ãããŠãŸã ããŒã«ãŒã«ïŒ
*芪æãªãææ³ãããããã¯åäŸã®æãžã®æç€ºã§ããã
åãã¹ã¿ã€ã«ã®è€æ°ã®ããŒã«ãŒã远å ããå¿
èŠãããå Žåã¯ã1ã€ã®ã¹ã¿ã€ã«ãªããžã§ã¯ãã䜿çšããã ãã§ååã§ãããã¹ã¿ã€ã«ã€ã³ã¹ã¿ã³ã¹ã®å€æŽã¯ãã¹ãŠã®ããŒã«ãŒã«åœ±é¿ããããšã«æ³šæããŠãã ããã
ããã§ãããŒã«ãŒã远å ããŸããã æ¬¡ã«ãç§»åãã¯ãªãã¯ãããã³ä»ã®ã€ãã³ãã«å¿çããæ©èœã远å ããŸãããã å®éãã€ãã³ãã®åŠçã¯ãç§ãäžç·ã«ä»äºãããæ©äŒããã£ãä»ã®ã©ã€ãã©ãªãšã»ãšãã©ç°ãªããŸãïŒæ®µèœãæ¬ ããã«èšäºå
šäœãèªãç±å¿ãªèªè
ã¯ããŸãããããGoogleã§ãããYandexã®ãªãŒãã¬ããã§ããããšãããããŸãïŒã
ãã©ãã°ã远å ïŒ
ç§ã®èšæ¶ãç§ã倱æãããªããªããããªãã¯æçµçã«å°å³ã®åšãã«ããŒã«ãŒãåããã§ãããã
ãŸãã¯ãã¯ãªãã¯ããŠããŒã«ãŒãããã¢ããã«è¿œå ããŸãã
selectControl = new OpenLayers.Control.SelectFeature(markers, {
ããã«äŸãèŠãããšãã§ããŸãïŒ
openlayers.org/dev/examples/select-feature-openpopup.html倧ããªåé¡ã¯ã次ã®å¿
èŠããããšãã«å§ãŸããŸãã
- ããŒã«ãŒãç§»åã§ãã
- ãããŒã衚瀺ããŸãïŒã€ãŸããonmouseinãšonmouseoutãåŠçããŸãïŒ
- ãªããžã§ã¯ãã®ããã«ã¯ãªãã¯ãã¯ãªãã¯ã®åŠç
- ãªããžã§ã¯ãã®å€åŽã§ã¯ãªãã¯ãããã«ã¯ãªãã¯ãåŠçããŸã
ããã¯è§£æ±ºãããçœå®³ã§ããã解決çã¯ããããå¥ã®èšäºã«å€ããã§ãããã
ãžãªã³ãŒãã£ã³ã°
FufãOSMããµã€ãã«è¿œå ããããŒã¿ãäžçªäžã«è¡šç€ºããããšãåŠã³ãŸããã ããããããã§ããGoogle APIïŒYandexïŒã®å€§éšåã¯è¹å€ã«æ®ã£ãŠããŸããã ã€ãŸãããžãªã³ãŒãã£ã³ã°ïŒäœæã«ãã座æšãšäœæã«ãã座æšã®ååŸïŒãšã«ãŒãã®ã¬ã€ã¢ãŠãã§ãã
OSMã§ã®ãããã®ã«ãŒãã£ã³ã°ã«ã€ããŠã¯ããŸããžãªã³ãŒãã£ã³ã°ã«ã€ããŠèª¬æããŸãã éãžãªã³ãŒãã£ã³ã°ïŒåº§æšã«ããäœæïŒãè¡ã£ãŠããªããããããã§ã¯äœæã«ãã座æšã®æ€çŽ¢ã«çŠç¹ãåœãŠãŸãã
ããã€ãã®ãªãã·ã§ã³ããããŸãïŒnominatimãŸãã¯openstreetmap.ruããæ¢è£œã®æ€çŽ¢ã䜿çšããŠãç¬èªã®èªè»¢è»ãäœæããŸãã ãžãªã³ãŒããŒãå¿
èŠã«ãªãçç±ã«ã€ããŠå°ã説æããŸãã
1.ããšãã°ãããããã¢ã¹ã¯ã¯ã«ã®ã¿èå³ããããããŒã¿ã®ã€ã³ããŒããããç°¡åã«ãªããéœåžãæå®ããã«æ€çŽ¢ã¯ãšãªãç°¡åã«ãªããŸãã
2.äœããã®çç±ã§ãã¯ã©ã€ã¢ã³ããã·ã³ãŸãã¯ãµãŒããŒããå€éšãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããšã¯ã§ããŸããã
3.ã¯ã©ã€ã¢ã³ãã¢ãã¬ã¹ã®ç¬èªã®ããŒã¿ããŒã¹ã䜿çšãããžãªã³ãŒããŒãå¿
èŠã§ãã
ãŸããéæ³ã¯ãããŸããïŒæãç°¡åãªãªãã·ã§ã³ã¯SolrãŸãã¯Sphynxã䜿çšããããšã§ãã å®éãsolrã§ãªããžã§ã¯ãã®å®å
šãªã¢ãã¬ã¹ãšåº§æšãšãšãã«ããã¥ã¡ã³ããä¿åããã ãã§ãã
ããšãã°ãäœæã®ãªã¹ããååŸããã«ã¯ãèå³ã®ããå°åãshp圢åŒã§ååŸãããããpostgisã«ã¢ããããŒãããæ¬¡ã®åœ¢åŒã®ãªã¯ãšã¹ãã§äœæãååŸããŸãã
select bldng.osm_id, bldng."A_STRT", bldng."A_SBRB", bldng."A_HSNMBR", settle."NAME", ST_AsText(ST_Centroid(bldng.geom)) from building-polygon bldng join settlement-polygon settle on ST_Within(bldng.geom, settle.geom)
仿¥ã¯ä»¥äžã§ãã æ¬¡åã¯ããªãŒãã³ã¬ã€ã€ãŒã®ã€ãã³ãã·ã¹ãã ã«ã€ããŠè©³ãã説æããŸãã
åç
§è³æ
Openlayersã®ããã¥ã¡ã³ã
-dev.openlayers.org/docs/files/OpenLayers/Map-js.htmlãµã³ãã«ãå«ããµã³ãããã¯ã¹ããããŸã
-openlayers.org/dev/examplesProj4js-trac.osgeo.org/proj4js
ããŸããŸãªåœ¢åŒã®ããŸããŸãªåº§æšç³»ã®èª¬æããããµã€ãã
proj4圢åŒã§
å«ãã-spatialreference.org