使用geojson确定给定地理位置与哪些其他地理区域相邻

时间:2014-11-14 17:20:34

标签: javascript geojson topojson

是否可以使用topojson或geojson来确定给定功能与哪些功能(即国家/地区,州/市)共享边界?对于那些不熟悉geojson的人来说,数据结构如下所示:

{
  "type": "FeatureCollection",
  "features": [
     {
       "type": "Feature",
       "id": "01",
       "properties": { "name": "Alabama" },
       "geometry": {
         "type": "Polygon",
         "coordinates": [[[-87.359296,35.00118],
           [-85.606675,34.984749],[-85.431413,34.124869],
           [-85.184951,32.859696],[-85.069935,32.580372],
           [-84.960397,32.421541],[-85.004212,32.322956],
           [-84.889196,32.262709],[-85.058981,32.13674] …
          ]]
      }
    },
    {
         "type": "Feature",
         "id": "02",
         "properties": { "name": "Alaska" },
         "geometry": {
           "type": "MultiPolygon",
           "coordinates": [[[[-131.602021,55.117982],
             [-131.569159,55.28229],[-131.355558,55.183705],
             [-131.38842,55.01392],[-131.645836,55.035827],
             [-131.602021,55.117982]]],[[[-131.832052,55.42469],
             [-131.645836,55.304197],[-131.749898,55.128935],
             [-131.832052,55.189182], …
            ]]]
          }
      }
// ... more features ...
}

2 个答案:

答案 0 :(得分:4)

这里的问题与格式无关,但TopoJSON使这很容易 - 实际上有一个库方法topojson.neighbors(objects),它应该提供你所需要的:

  

返回一个数组,表示指定对象数组中每个对象的相邻对象集。返回的数组与输入数组具有相同数量的元素;返回数组中的每个元素i是输入数组中对象i的邻居的索引数组。例如,如果指定的对象数组包含foo和bar的特征,并且这些特征是邻居,则返回的数组将是[1,[0]],表示foo是bar和副的邻居反之亦然。

答案 1 :(得分:0)

GeoScript库有一个Javascript(也是Python,Groovy和Scala)实现。该库包含geom.Geometry类,该类具有一个名为Geometry.touches的方法,可以测试一个几何体是否接触另一个几何体。这正是你所需要的。