搜索 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.

以外的东西