2015-08-10 4 views
0

Я разрабатываю приложение на основе Кордовы с файлом geojson, и мне нужно знать, есть ли способ проверить, находится ли моя текущая геолокация (широта и логичность) внутри geojson: linestring. Это приложение работает в автономном режиме.Поиск по файлам GeoJson

ответ

0

Решение проблемы с использованием 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.