2014-11-14 84 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的方法,可以測試一個幾何體是否觸及另一個幾何體。這正是你需要的。