You are not logged in.

#1 2020-05-29 09:17:33

papuas
Member
Registered: 2020-05-29
Posts: 10

Как получить координаты границ районов

Здравствуйте,

Использовал пример отсюда http://zabolotskikh.com/tips/kak-poluch … y-rayonov/

делаю запрос

$response = json_decode(curl('https://nominatim.openstreetmap.org/search?format=json&q=' . urlencode($f['name'] . ', ' . $f['city']) . '&polygon_geojson=1'), true);

в результате вываливается,

3 результата, но границ среди нет.

Как из получить?

мне нужны границы всех районов городов России, чтоб потом проверять находится ли определенный дом внутри района.

Offline

#2 2020-05-29 09:38:08

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

Странно как ту все работает, создал пост а он не опубликовался

скажите получить координаты границ районов Москвы не выходит полностью их получить, неткорые появились, но на многие не выходит. Может у кого есть выгрузка границ всех районов границ городов России, очень нужно.

использовал следующий код.

$sql = '
	SELECT
		*
	FROM
		`hi_district`
	WHERE
		`status` = "1" AND
		`region` != "0" AND
		`name` LIKE "Северное Тушино"
	ORDER BY
		`id` ASC';
	$r = $db->query($sql);
if ($db->numrows($r) > 0) {
	while ($f = $db->fetcharray($r)) {
		$response = json_decode(curl('https://nominatim.openstreetmap.org/search?format=json&q=' . urlencode($f['name'] . ', ' . $f['city']) . '&polygon_geojson=1'), true);
		//print_r (curl('https://nominatim.openstreetmap.org/search?format=json&q=' . urlencode($f['name'] . ' район, ' . $f['city']) . '&polygon_geojson=1'));
		print_r ($response);
		$result = [];
		if ($response[0]['geojson']['type'] === 'MultiPolygon') {
			$coords = $response[0]['geojson']['coordinates'];
			foreach ($coords as $coord) {
				$temp = [];
				foreach ($coord[0] as $item) {
					$temp[] = array_reverse($item);
				}
				$result[] = $temp;
			}
		} elseif ($response[0]['geojson']['type'] === 'Polygon') {
			$coords = $response[0]['geojson']['coordinates'][0];
			foreach ($coords as $coord) {
				$result[] = array_reverse($coord);
			}
		}
		if ($result) {
			if(get_lvl($result) >= 3) {
				$f['boundary'] = $result[0];
			}
			else {
				$f['boundary'] = $result;	
			}
			$sql = '
				UPDATE
					`hi_district`
				SET
					`boundary` = "' . serialize($f['boundary']) . '"
				WHERE
					`id`	= "' . $f['id'] . '"';
			$db->query($sql);
			print_r($f['boundary']);
		}
	}
    //echo '<meta http-equiv="refresh" content="1; url=' . URL . '/service/get_district.php?page=' . $_GET['page'] . '">';
    exit();
}
else {
    echo '<br />Done';
}

Напримерно не могу получить границы "Северное Тушино, Москва"

Offline

#3 2020-05-29 09:45:46

pfg21
Member
From: Чебоксары
Registered: 2012-10-18
Posts: 3,682

Re: Как получить координаты границ районов

может быть изза того что Северное Тушино не фоормлено как city если судить по запросу в номинатим ??
https://www.openstreetmap.org/relation/445279
и запрос  "Северное тушино city"
https://nominatim.openstreetmap.org/sea … 1&viewbox=
не находит площадного объекта.

вам бы в апи номинатима немного разобраться.

Last edited by pfg21 (2020-05-29 09:51:24)

Offline

#4 2020-05-29 10:18:34

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

и почему когда я захожу сюда не вижу координат границ, я бы мог руками все вытащить, прям так обидно, что не делают сервис не удобным, по идее должен быть поиск по городам по районам и тп. Может есть укого нормальная истрация как развернуть все это дело локально может от туда смогу вытащить. 3 день мучаюсь.

https://nominatim.openstreetmap.org/det … s=boundary

Offline

#5 2020-05-29 10:21:45

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

https://nominatim.org/release-docs/develop/api/Search/

вот с таким параметром тоже не работает границы не получает, а точка мне нужна

city=Москва

Offline

#6 2020-05-29 10:22:10

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 7,984

Re: Как получить координаты границ районов

Это геокодер, он не выдаёт наружу границы. Он работает в адресом или точечной координатой.
Скачайте дамп ОСМ и извлекайте границу самостоятельное.
https://download.geofabrik.de/russia.html

Offline

#7 2020-05-29 10:23:10

pfg21
Member
From: Чебоксары
Registered: 2012-10-18
Posts: 3,682

Re: Как получить координаты границ районов

есть такая подборка
https://osm-boundaries.com/
или так
http://atd.openstreetmap.ru/r446092.html

Last edited by pfg21 (2020-05-29 10:26:11)

Offline

#8 2020-05-29 10:39:08

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

pfg21 wrote:

есть такая подборка
https://osm-boundaries.com/
или так
http://atd.openstreetmap.ru/r446092.html

Там все не рабочее, не понятно зачем и почему они это создали(( хрень какая-то границ то нету

Last edited by papuas (2020-05-29 11:01:31)

Offline

#9 2020-05-29 10:40:49

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

freeExec wrote:

Это геокодер, он не выдаёт наружу границы. Он работает в адресом или точечной координатой.
Скачайте дамп ОСМ и извлекайте границу самостоятельное.
https://download.geofabrik.de/russia.html

Объясните как вот это работает

https://nominatim.openstreetmap.org/sea … _geojson=1

Я таким образом на часть большую часть районов смог получить координаты границы, но другую часть не смог. Проблема явно не во мне.

Offline

#10 2020-05-29 11:43:01

alexey_zakharenkov
Member
Registered: 2015-12-09
Posts: 26

Re: Как получить координаты границ районов

У меня получилось скачать набор границ с сайта https://osm-boundaries.com/.

Также для отдельного города можно посмотреть/скачать границы районов через overpass-api, например для Москвы:

[out:json][timeout:600];
area(id:3600102269) ->.a;  // 102269 - это OSM id отношения границы Москвы
rel[boundary=administrative][admin_level=5](area.a);
out geom;

Для всей страны не потянет, да и admin_level у районов разных городов разный. Но так можно вытащить id-шники (в конце не "out geom;", а просто "out;" или "out id;"), а геометрию каким-то другим методом ("osmconvert -B" + osmfilter, http://polygons.openstreetmap.fr/).

Но, кажется, в масштабах страны более перспективно osmfilter+osm2pgsql и работа напрямую с базой.

Offline

#11 2020-05-29 13:11:29

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

Как все сложно, блин я даже купить не могу готовые данные, так все хреново. Пожалуйста продайте мне кто нибудь готовые данные. Или предоставьте платный доступ где данные можно на постоянной основе извлекать, заибало. Ни для людей все делают. Я хоть и программист, но у меня уже руки опускаются.

Last edited by papuas (2020-05-29 13:20:28)

Offline

#12 2020-05-29 13:16:33

pfg21
Member
From: Чебоксары
Registered: 2012-10-18
Posts: 3,682

Re: Как получить координаты границ районов

дык, осм не готовый сервис, а универсальный набор данных...
nexgis.ru наверное тогда

Offline

#13 2020-05-29 13:16:35

freeExec
Moderator
From: Ульяновск,Модератор всех слоёв
Registered: 2012-07-31
Posts: 7,984

Re: Как получить координаты границ районов

Offline

#14 2020-05-29 14:18:53

Zverik
Moderator
From: Москва
Registered: 2010-10-14
Posts: 5,680
Website

Re: Как получить координаты границ районов

Papuas, Мат запрещён. Это предупреждение.


ШТОСМ | josm.ru | обо мне | a soldier will fight long and hard for a bit of colored ribbon

Offline

#15 2020-05-29 16:05:28

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

pfg21 wrote:

дык, осм не готовый сервис, а универсальный набор данных...
nexgis.ru наверное тогда

там нету данных я звонил им 30 минут, они просят 100 000 руб. да и то без гарантии результатов.

Offline

#16 2020-05-29 16:31:24

sim
Member
Registered: 2008-04-19
Posts: 632
Website

Re: Как получить координаты границ районов

0. данные есть, 25913 единиц АТД по РФ
1. они просят не 100тр, а 12тр (вся РФ, АТД Москвы - 150р)
2. звонить не обязательно, все можно купить через сайт

https://data.nextgis.com/ru/region/RU/

Last edited by sim (2020-05-29 17:21:29)

Offline

#17 2020-05-29 16:41:14

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

sim wrote:

0. данные есть, 25913 единиц АТД по РФ
1. они просят не 100, а 12
2. звонить не обязательно, все можно купить через сайт

https://data.nextgis.com/ru/region/RU/

12 000 это же кот в мешке, проверить нет возможности

Offline

#18 2020-05-29 16:48:06

sim
Member
Registered: 2008-04-19
Posts: 632
Website

Re: Как получить координаты границ районов

3. проверить есть большое количество возможностей

Last edited by sim (2020-05-29 16:48:15)

Offline

#19 2020-05-29 17:07:41

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,527

Re: Как получить координаты границ районов

sim wrote:

1. они просят не 100, а 12

За select из postgis ?
охренеть.
впрочем если лузеры платят ...

Offline

#20 2020-05-29 17:10:17

Alexandr Zeinalov
Member
From: New-Peredelkino, Moscow, RU
Registered: 2009-08-26
Posts: 1,695
Website

Re: Как получить координаты границ районов

usm78-gis wrote:
sim wrote:

1. они просят не 100, а 12

За select из postgis ?
охренеть.
впрочем если лузеры платят ...

Это вполне демократичная цена за скорость и сервис. Не всякий способен за полчаса разобраться в обработке данных OSM, особенно если ему это нужно для того, чтобы раз в год обновить границы.

Offline

#21 2020-05-29 17:16:18

papuas
Member
Registered: 2020-05-29
Posts: 10

Re: Как получить координаты границ районов

usm78-gis wrote:
sim wrote:

1. они просят не 100, а 12

За select из postgis ?
охренеть.
впрочем если лузеры платят ...

Конечно лузер, ни кто подсказать нормально не может, я целый день помощи прощу, ни кто помочь не может даже вы postgis кидаетесь ссылками на различные проекты не рабочие, а мне рабочий нужен, я и так 4 дня потратил бестолку.

Хочу развернуть свой сервак на centos 8, подскажите где взять готовую базу, чтоб можно было GET запросом вытягивать данные.

Offline

#22 2020-05-29 17:20:06

sim
Member
Registered: 2008-04-19
Posts: 632
Website

Re: Как получить координаты границ районов

Это не select из PostGIS

Это то, что описано тут:
https://data.nextgis.com/ru/about/#whyuse

Если вы можете это сделать select-ом из PostGIS - снимаю шляпу.

Offline

#23 2020-05-30 17:05:08

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,527

Re: Как получить координаты границ районов

Alexandr Zeinalov wrote:

Это вполне демократичная цена за скорость и сервис. Не всякий способен за полчаса разобраться в обработке данных OSM, особенно если ему это нужно для того, чтобы раз в год обновить границы.

1. Я ничего не имею против того, что богатые москвичи заплатят за эти данные.
2. Я храню весь мир из ОСМ в postgis для внутреннего употребления и хорошо представляю
себе уровень сложности задачи и необходимых ресурсов, несмотря на RAID0 из SSD
и машины с 512+ ГБ RAM.
3. Для Ленинградской области (например) есть гораздо более качественный чем ОСМ
слой административного деления  (WMS и WFS) доступный всем на сайте
регионального фонда пространственных данных.
Есть над чем задуматься коммерческим поставщикам данных.

Offline

#24 2020-05-30 23:27:31

Alexandr Zeinalov
Member
From: New-Peredelkino, Moscow, RU
Registered: 2009-08-26
Posts: 1,695
Website

Re: Как получить координаты границ районов

usm78-gis wrote:

1. Я ничего не имею против того, что богатые москвичи заплатят за эти данные.

Если человек умеет считать деньги, то может купить вне зависимости от того, где он живёт. Например, если решение задачи требует недели работы специалиста на разобраться и сделать, то есть 5*8=40 часов, а стоимость этого специалиста составляет 500 рублей в час, то любой набор данных дешевле 20000 будет не растратой денег, а их экономией.

Вот если данные нужны не разово, а с регулярным обновлением, то ситуация может измениться. В любом случае, какие-то гнусные инсинуации про богатеньких москвичей тут совершенно не к месту.

2. Я храню весь мир из ОСМ в postgis для внутреннего употребления и хорошо представляю
себе уровень сложности задачи и необходимых ресурсов, несмотря на RAID0 из SSD
и машины с 512+ ГБ RAM.

Аренда сколько-нибудь приличных серверов стоит весьма серьёзных денег. А для работы с объёмами OSM в масштабах всей планеты ресурсов нужно немало. И это мы ещё зарплату сотрудников не обсуждаем.

3. Для Ленинградской области (например) есть гораздо более качественный чем ОСМ
слой административного деления  (WMS и WFS) доступный всем на сайте
регионального фонда пространственных данных.

А потом придётся искать, парсить, фиксить ошибки итд для данных десятков регионов, всё это сводить в единую базу... Короче, это серьёзная работа, за которую возьмут немаленькие деньги. Или сам мучайся, если нищеброд.

WFS, между прочим, для многих задач не подойдёт. И ещё вопрос, можно ли скачать эти данные к себе для собственного коммерческого использования.

Есть над чем задуматься коммерческим поставщикам данных.

Поставщики это знают и при желании заказчика что угодно с чем угодно объединят, если заказчик согласится с выставленным счётом.

Offline

Board footer

Powered by FluxBB