Получение ограничивающего прямоугольника города
Я хочу знать, как далеко находится конкретная географическая координата от списка городов ("далеко" означает евклидово расстояние между координатой и городом, не принимая во внимание дороги). Для этого мне нужно найти ограничительную рамку для каждого из городов-все они расположены в Израиле.
В этом посте обсуждаются границы страны, но они нужны мне на уровне города.
Есть ли какой-либо способ получить эту информацию для длинного списка городов, кроме рисования прямоугольников по рука на карте и извлекает координаты?
4 ответа:
Вы можете найти ограничивающую рамку этих городов по адресу www.mapdevelopers.com/geocode_bounding_box.php . при входе в город на карте появится прямоугольник с указанием широты и долготы каждой стороны. Надеюсь, это даст вам необходимую информацию.
Для получения длинного списка городов используйте сервис геокодирования Google. После настройки вы можете использовать любой язык для доступа к REST API. Например, вы можете использовать популярную стандартную библиотекуrequests для Python.
Или вы можете использовать собственный Google Maps Java API, Python API , илиJavaScript API . Любой из них содержит сервис геокодирования Google.
Смотрите здесь несколько простых примеров библиотеки Python и Java: https://developers.google.com/maps/documentation/webservices/client-library .
Вот схема для результатов геокодирования:
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
Ограничивающий прямоугольник расположен в переменной
geometry>viewport
и выглядит следующим образом"viewport" : { "northeast" : { "lat" : 37.4238253802915, "lng" : -122.0829009197085 }, "southwest" : { "lat" : 37.4211274197085, "lng" : -122.0855988802915 } }
Я думаю, вам нужны не ограничительные рамки, а границы города. Потому что с ограничивающими рамками ваш анализ будет очень грубым, и чтобы получить ограничивающую рамку, вам все равно сначала нужна граница.
Если у вас теперь есть только список городов, вам нужно получить пространственные данные, границы всех ваших городов. Чтобы найти эти данные, вы можете попробовать эти ссылки. Я бы предложил проверить открытые карты улиц. Затем вы можете использовать любое программное обеспечение ГИС (например, квантовую ГИС с открытым исходным кодом) и вычислить там евклидовы расстояния между вашей точкой и границами города.
Надеюсь, это поможет.
Вы можете найти ограничивающую рамку этих городов по адресу http://boundingbox.klokantech.com/ При входе в город / страну на карте появится прямоугольник с указанием широты и долготы каждой стороны. Но точность выше, чем у http://www.mapdevelopers.com/geocode_bounding_box.php (thx к @Fred за его ответ)