搜索 GeoJson 文件
Search on GeoJson files
我使用 geojson 文件开发基于 Cordova 的应用程序,我需要知道是否有办法检查我当前的地理位置(纬度和经度)是否在 geojson:linestring 内。此应用可离线使用。
这是一个使用 jq (https://stedolan.github.io/jq) 的解决方案。
给定一个有效的 geojson 对象,此处定义的 report(latLong) 将 return true 每次对象 "type" 等于 "LineString" 和 "coordinates" 在遍历 geojson 对象时遇到指定的 latLong。
def report(latLong):
if type == "object"
and .type == "LineString"
and (.coordinates | type) == "array"
and (.coordinates | index([latLong])) then true
elif type == "array" or type == "object" then .[] | report(latLong)
else empty
end;
使用此定义的一种方法是将其放入文件中,例如 geojson.jq,
连同以下行:
report($latLong | fromjson)
这是一个示例,假设 http://geojson.org/geojson-spec.html#examples 处的 geojson 对象位于名为 geojson.json 的文件中:
$ jq --arg latLong "[103.0, 1.0]" -f geojson.jq geojson.json
true
还有其他方法可以使用上面定义的 report/1,当然也可以定义 report/1 的变体,例如产生 true.
以外的东西
我使用 geojson 文件开发基于 Cordova 的应用程序,我需要知道是否有办法检查我当前的地理位置(纬度和经度)是否在 geojson:linestring 内。此应用可离线使用。
这是一个使用 jq (https://stedolan.github.io/jq) 的解决方案。
给定一个有效的 geojson 对象,此处定义的 report(latLong) 将 return true 每次对象 "type" 等于 "LineString" 和 "coordinates" 在遍历 geojson 对象时遇到指定的 latLong。
def report(latLong):
if type == "object"
and .type == "LineString"
and (.coordinates | type) == "array"
and (.coordinates | index([latLong])) then true
elif type == "array" or type == "object" then .[] | report(latLong)
else empty
end;
使用此定义的一种方法是将其放入文件中,例如 geojson.jq, 连同以下行:
report($latLong | fromjson)
这是一个示例,假设 http://geojson.org/geojson-spec.html#examples 处的 geojson 对象位于名为 geojson.json 的文件中:
$ jq --arg latLong "[103.0, 1.0]" -f geojson.jq geojson.json
true
还有其他方法可以使用上面定义的 report/1,当然也可以定义 report/1 的变体,例如产生 true.
以外的东西