是否可以使用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 ...
}
答案 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的方法,可以测试一个几何体是否接触另一个几何体。这正是你所需要的。