Я разрабатываю приложение на основе Кордовы с файлом geojson, и мне нужно знать, есть ли способ проверить, находится ли моя текущая геолокация (широта и логичность) внутри geojson: linestring. Это приложение работает в автономном режиме.Поиск по файлам GeoJson
ответ
Решение проблемы с использованием jq (https://stedolan.github.io/jq).
Учитывая действительный объект GeoJSON, отчет (LatLong), как определено здесь будет возвращать истинное каждый раз, когда объект с «типа» равно «LineString» и «координаты», имеющие определенное LatLong встречается как объект GeoJSON является пройден.
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)
Вот пример, который принимает объект GeoJSON на http://geojson.org/geojson-spec.html#examples находится в файл под названием geojson.json:
$ jq --arg latLong "[103.0, 1.0]" -f geojson.jq geojson.json
true
есть другие способы использования определенных выше отчета/1, и, конечно, есть варианты отчет/1 т шляпа может быть определена, например. чтобы получить что-то иное, чем true.