Получение ограничивающего прямоугольника города


Я хочу знать, как далеко находится конкретная географическая координата от списка городов ("далеко" означает евклидово расстояние между координатой и городом, не принимая во внимание дороги). Для этого мне нужно найти ограничительную рамку для каждого из городов-все они расположены в Израиле.

В этом посте обсуждаются границы страны, но они нужны мне на уровне города.

Есть ли какой-либо способ получить эту информацию для длинного списка городов, кроме рисования прямоугольников по рука на карте и извлекает координаты?

4 10

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 за его ответ)