2014-11-14 57 views
1

是否可以使用topojson或geojson来确定给定要素与哪些要素共享边界?对于那些不熟悉以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 ... 
} 

回答

4

这里的问题是独立的格式,但TopoJSON使这很容易 - 实际上有一个库方法topojson.neighbors(objects),它应该提供您需要的东西:

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

+0

这很酷,不知道TopoJSON有这个功能作为API。谢谢! – iH8 2014-11-15 13:22:33

0

GeoScript库有Javascript(也Python和Groovy的&斯卡拉)执行。该库包含geom.Geometry类,该类有一个名为Geometry.touches的方法,可以测试一个几何体是否触及另一个几何体。这正是你需要的。