Pull to refresh

Comments 22

"С генерацией KML-файлов мне помогла Python-библиотека pyKML"

PostGIS умеет сам отдавать KML https://gis.stackexchange.com/questions/64850/how-to-export-from-postgis-to-kml

"у Google Maps есть ограничение по количеству импортируемых объектов в 2000 штук"

у google earth или sas planet нет такого ограничения и не нужно загружать свои данные на внешний сервер

И вообще можно поставить QGIS, открыть в нём слои из PostGIS и там же совместить его с google maps

Так же из интерфейса QGIS можно сохранить слой из PostGIS сразу в KML в пару кликов...

Круто, что есть альтернативный способ решения, который я не нашла. Спасибо, что написал про это.
Про способ через QGIS не знала, при поиске вариантов решения на него не вышла, теперь ознакомлюсь. Статьи в том числе для того и пишутся, чтобы получить обратную связь и узнать что-то для себя новое.
Практически любая задача имеет несколько вариантов решения, ну и не у всех данные в Postgis.

Можно еще дальше пойти и настроить Geoserver.
Ставится в пару кликов, нативно отображает данные из Postgis.
Про импорты экспорты можно забыть.

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

Непротиворечивость - частично помогает (пересекающиеся полигоны, например), но это ужасно примитивный способ, когда можно оформить это алгоритмически (у вас же PostGIS).

Корректность - невозможно, потому что просто глядя на полигон границ, нельзя сказать, на сколько он соответствует официальным границам.

Полноту - то же самое, можно только частично (например, проверить в базе наличие полигонов для населенных пунктов по списку), но это совершенно отдельная история - проверить соответствие этого списка реальности.

Собственно, вы не описали метод анализа или верификации. Вы написали статью "как (длинно и избыточно) визуализировать данные из PostGIS в Google Maps".

Соглашусь, что с помощью визуализации не получится достоверно верифицировать полноту, корректность, непротиворечивость данных, если говорить про абсолютные величины. Однако относительно «было-стало» визуалиция помогает. Выявлять пересечение полигонов, конечно, таким способом нет никакого смысла — это решается алгоритмически. Но как алгоритмом определить корректность? Скажем, в системе есть город Киев, у него есть координата центра и полигон, координата центра входит в полигон. Как убедиться, что расположение действительно соответствует Киеву, а не какому-нибудь другому городу? Или другой пример, в системе есть множество точек без полигонов, которые принадлежат согласно системе городам. Как убедиться, что эти координаты являются действительно городами, а не парками, улицами, районами города? Нанеся такие примеры на карту эти проблемы можно увидеть. Если есть идеи, как это сделать алгоритмически, с удовольствием выслушаю их, потому что, конечно, текущий способ полуручной. По факту нужен эталон данных, с которым можно бы было сравниться, но даже, если найти эталон, то встанет следующий вопрос — маппинг наших данных на эталонные.

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

Полноту и непротиворечивость - чуть проще, относительно точно известных критериев. Например (совершенно условно) - составить список городов с населением более 30 тысяч и проверить, есть ли у вас в базе для каждого полигон.

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

Вы через строку читаете? Вы сейчас говорите о корректности, а проверка наличия по списку - это вопрос полноты.

Задачу полноты я не решала. Решала изначально задачу определения качества существующих данных в БД: найти координаты и полигоны, несоостветствующие реальным населенным пунктам.
Чтобы решить задачу полноты нужен эталон (качественного эталона мы не нашли в свободном доступе) и его маппинг на наши данные, что весьма нетривиально.
Верефицировала данные визуально, нанеся их на карту. Гугл карта является эталоном, где можно увидеть, что наш «Киев» нарисовался поверх Кировограда.

Карта Гугл не является эталоном, потому что её рисовали, в том числе, наемные студенты.

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

Может Вы можете посоветовать хороший эталон лучше карт? Критика — это хорошо, но ещё лучше предложить что-то взамен.

Предложить бесплатно помощь разработчику из Озона, который получает зарплату за то, что не до конца понимает, как делать? Вы, должно быть, шутите.

А почему нельзя взять данные OpenStreetMap и по ним сверяться? Да они не идеал, но карты тех регионов которых я смотрел были очень достойными.
Если не детализацией объектов, то как раз границами населенных пунктов.

Какая-то часть данных у нас взята из OSM, и данные оттуда были взяты не всегда корректные.
Проблема в том, что у нас когда-то был создан справочник географических данных, на идентификаторы которых завязано огромное количество внешних систем. Нам нельзя просто убить этот справочник и забрать данные из OSM, нужно правильно сопоставить на существующие данные. Я делала это сопоставление для Казахстана после того, как наложение исходных данных на карту показало большое количество проблем. Но красивого алгоритмического решения не нашла, у OSM много нюансов в данных, пришлось около 30% обрабатывать вручную.

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

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

А мне понравилась статья Екатерины! Даже несмотря на излишне едкие, на мой взгляд, комментарии некоторых пользователей.

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

Возможно, есть более эффективные способы, но для них нужны дополнительные знания и скилы, которых у Екатерины на момент решения не было.

Вобщем, мне статья понравилась и была для меня полезной.

Спасибо за статью. Давно хочу карты использовать в паре проектов, но никак руки не доходят. Сохраню в закладки :-)

Рада, что смогли почерпнуть для себя что-то полезное)

Очень интересная задача была поставлена. К сожалению, мне не приходилось работать с картами. Но после прочтения статьи захотелось попробовать изучить данную область поглубже. Спасибо Екатерине за наводку!

Спасибо за отзыв)
Рада, что статья пробудила интерес к теме :)
Sign up to leave a comment.