Клуб API Карт

Маршрутизация по городам

Пост в архиве.

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

Ранее с КЛАДР с копировал базу городов  и запросом к вашему геокодеру получил координаты, каждого города и скопировал кординаты  себе в базу даных,

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

 подскажите что делаю не так  :(

11 комментариев

Как Вы сравниваете координаты из массива с координатами городов?

Александр Журин
28 января 2016, 01:27

1 вариант. Координаты разделил 38.929616,55.531840  на sity_pos_x =38.929616 и city__pos_y = 55.531840 Это координаты Москвы.

вот запрос.

select c.city_name,r.region_name from city_all c INNER JOIN region r ON c.region_id=r.id where c.city__pos_x ='".$_POST["sity_pos_x"]."'  and  c.city__pos_y ='".$_POST["sity_pos_y"]."' "

2 вариант. 

select c.city_name,r.region_name from city_all c INNER JOIN region r ON c.region_id=r.id where c.city__lowerCorner_x =>'".$_POST["sity_pos_x"]."'  and  c.city__lowerCorner_y =>'".$_POST["sity_pos_y"]."' and c.city__upperCorner_x =c.city__upperCorner_y ="]."' "


Так трудно сказать, я же не знаю что лежит у Вас в базе.

И Вы случайно не строки сравниваете? Надо то числа

Александр Журин
28 января 2016, 01:27

расскажите пожалуйста как бы вы сделали с самогоначала !  а я на вашем примере сделаю также ! 

нет сравниваю не строки поэтому и разделил  координаты на X и Y 

Если бы я работал с геоданными в БД, я бы использовал что-то типа Spatial Indexes

Александр Журин
28 января 2016, 01:27

:-@ а может где нить скачать вашу БД  к себе ?  проблема бы решилась .

где-нибудь скачайте =))

Александр Журин
28 января 2016, 01:27

а моно сылочку в студию :) 

Можно мне скачать весь Яндекс себе? Хочу чтобы на моем сайте работал такой же поиск и карты и все сервисы

Александр Журин
28 января 2016, 01:27

все наконецто я разобрался  ,теперь у меня вопрос в другом.

у меня api yandex возврашает массив JS 40.000  элементов я его перевожу в  php  и кидаю на сервер для того что бы выяснить по каким городам идет трасса

 для этого мне нужно сравнить примерно так

 SELECT ca.city_name FROM city_all ca INNER JOIN

  city_temp ct 

 

  WHERE   ca.upperCorner_x > ct.coords_x AND  ct.coords_y < ca.upperCorner_y  AND  ca.lowerCorner_x < ct.coords_x AND  ct.coords_y > ca.lowerCorner_y GROUP BY ca.city_name ORDER BY ct.id;

 но это работает если я весь массив записсываю в таблицу это очень долго

 поэтому мне нуно сравнить массив и таблицу

   city_temp  должен быть массив

или подскажите альтернативу как сверить , Дело в том, что данные для сравнения находятся в разных подсистемах. И долго их передевать между ними.

 

То что ты делаешь по-хорошему должен отдавать сам маршрутизатор, т.к. у него эти данные есть. Мы уже год уговариваем его разработчиков отдавать города по маршруту, но воз и ныне там. А искать таким образом попадание 40 тыс. точек во все города и правда оч. долго как не крути