Как стать автором
Обновить

Интерактивная карта субъектов России для новичка. Ошибки, которые допустил я и которые не должны допустить вы

Время на прочтение5 мин
Количество просмотров51K
Всего голосов 74: ↑63 и ↓11+52
Комментарии136

Комментарии 136

Ещё картостроители часто забывают про Калининградскую область. На некоторых картах её просто нет.
Почти не встречал такое, хотя через меня прошло где полсотни различных по качеству карт.

А можно пример? О_о

Для того, чтобы описать, как нужно делать для решения подобной задачи, не нужна целая статья.

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

Потому что для того, чтобы действительно разобраться в вопросе, нужно «несколько больше», чем пара дней. Но если это разовая задача, какой смысл их тратить?

Эпоха натурального хозяйства закончилась несколько веков назад. Вы же не пытаетесь самостоятельно чинить всё, что у вас сломалось, или самостоятельно собирать все серверы, на которых будет крутиться проект. Вероятно, потому что осознаете, что профессионал сделает это лучше. Но по какой-то странной причине, считаете, что картографическая задача — это «тот же SVG, JSON, JavaScript», а потому беретесь за нее и тратите практически зря дофига времени, за которое вы бы заработали значительно больше, чем потратили бы на аутсорс этой задачи.
дать денег тому, кто этим занимается профессионально

По вашему у всех есть деньги на оплату работы «профессионалов»? К тому же на фрилансе вы скорее попадете на какого-н. студента, нежели реального спеца

Студента — достаточно. Если у конторы есть деньги на продакт-мегеджера, то есть и на аутсорсинг такой задачи. Проверено.

Так эти студенты и учатся по статьям в инете;-)
Не студенты-картографы, к счастью. По крайней мере, не все из них — точно.
Довольно сложно найти фрилансера, сочетающего умение работать с JS и GIS, или хотя бы имеющего базовое представление о современной географии, проекциях, например. Не невозможно, но вместо десятка тысяч людей на условную Москву останутся двадцать, и хорошо, если этот скилл будет указан в резюме. *пойду добавлю, кстати*
Подтверждаю. Сам искал. Нашли например картографа, умеющего на js. Денег просил не очень много. Но как разработчик не подходил совершенно, как мои друзья еще в институте выражались, «я программист от сохи».

>если этот скилл будет указан в резюме
Именно. А даже если и будет — замучаешься искать все равно. Скилл какой, как называется это ключевое слово, по которому искать будем? :)
Cудя по названию курса, который я брал в 2013 году у Amy Glasmeier, аббревиатура GIS и фраза Geospatial data handling должна помочь, по крайней мере, для англоязычных разработчиков. В русском языке есть аналоги «ГИС» и «геолокационные данные», но не знаю, насколько широко они используются для связанных задач.
Ну, может и поможет, но далеко не факт. Подбор людей никогда не был простой задачей, и от появления ключевых слов в резюме такой не станет :)

> *пойду добавлю, кстати*
Ну вот у меня GIS в резюме нет, но есть почти пару лет опыта. Ну и главное — когда вам нужно сочетание разработчика и картографа — тут много нюансов. Впрочем, любой сложной прикладной области это касается в той или иной мере.
Зачем JS? Задача — подготовить карту. А JS на нее повесить могут уже сами разработчики.
>получите искомое за полчаса
Ну это вы загнули. Нет, я не против постановки вопроса «дать денег профессионалам», но за полчаса вы решение не получите. Скорее всего, вы его получите за такое же время, а возможно и позже. Просто оно работать будет иначе, вероятно лучше.

Ну и да, вопрос выбора правильного профессионала никто не отменял, и он непростой.

Допустим прямо тут, на хабре, я бы смог назвать примерно 5-10 человек, которые что-то заведомо понимают в картографии, потому что либо публиковали статьи, либо участвовали в обсуждениях, и отметились полезными комментариями. Но это при условии, что я сам этой темой занимался, и что-то в ней понимаю. А теперь представим, что вы как заказчик, не понимаете. Как выбрать того, кто подойдет? Сколько денег он попросит?

Ну и наконец, вы просто потратите минимум несколько дней на то, чтобы связаться с ними всеми, найти кого-то, кто свободен (совершенно не факт, что это будет лучший по всем параметрам кандидат), и договориться.
Я элементарно сужу по тому, сколько мне понадобится времени, чтобы это сделать — подготовить данные. И знаю, что почти любой человек, который занимается геоинформатикой за деньги, сможет это повторить где-то за то же самое время. Задача выбора исполнителя для проблемы, в которой собственные разработчики некомпетентны — универсальна, изобретение велосипеда ее не решает, а решает — например, обращение к тем, кто точно решал задачи сложнее вашей. Это, в общем, азбука project management. Так что вы смешиваете (без всякой причины) решение геоинформационных проблем и, гхм, слабость управления в команде/проекте.

Ваша логика применима в stateless business, когда после шиппинга продукта не остаётся ничего.


А в нормальном бизнесе остаётся компетенция исполнителя. Ценный и труднополучаемый ресурс, между прочим.

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

Образуется достаточно знаний, чтобы суметь начать работать с компетентным исполнителем. breadth растёт. Depth не особо, а вот breadth точно, потому что если один раз сам наговнякал, то понять хотя бы в общих чертах что делает толковый человек (и толковый ли он) уже можно. В отличие от ситуации чёрного ящика и заказчика, который только и знает "мне нужна карта".

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

Вообще это часть политического проекта с бюджетом на разработку плюс-минус 5к рублей(!), так что нанять профессионала не вариант. Карты это лишь небольшой блок в проекте, поэтому главной задачи было сделать инструмент для отображения данных, забыть о нем и пойти делать другой функционал. Понятно что для разработки ГИС такой метод не подходит, но я писал эту статью как раз для тех, кто делает свои проекты и ему важен результат, а не процесс. Сделал-забыл.
Для бюджета плюс-минус 5к и сроков 2-3 дня — да, это решение очень даже ничего.
Крым. Первые ссылки в гугле вас ведут на gis-lab. И на этих картах нет полуострова. Тут все просто. Основные российские карты сделаны в 2000 и 2010 году, т.е до включения Крыма в состав РФ, а многие западные сервисы не признают присоединение и не добавляют полуостров в свои карты. А если вы в свой проект вставите карту без Крыма, будучи в России, вы сами понимаете, что может произойти. Поэтому делать карту без этой территории не вариант.
Что может произойти то? Какую задачу вы решаете и какого рода наказание вы ожидаете за неисполнение этого очевидно спорного момента?

А вы не задумались о последствиях использования неправильного варианта (с указанием Крыма в составе РФ)? например вам могут отказать в шенгенской визе (особенно если вы будете предоставлять финансовые услуги в этой области). Возможно сейчас я преувеличиваю, но что будет потом?..

Как вариант, передавать генератору флаг "с точки зрения россии".

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

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


В глубинах интернета на заброшенном сайте вы нашли карты...

Не лазил бы где попало, а юзал гугл или open street maps проблем бы не возникло. А так импортозамещаем г-ом. Если мне не изменяет память, то у гугла его задача есть в экзамплах для всех стран.


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

Да как минимум какашками закидают, что для хобби-проекта неприятно.


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

Как видите, какашками закидают что при том, что при другом состоянии Крыма на карте.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

О да! Это тема. В копилку гео мазозизма добавлю переставленные местами широту и долготу в апи яндекс карт, которое генерит растровый кусочек карты.

На тех картах что приведены в статье, Москва нарисована без «новой Москвы».
В целом к картам конечно нужно подходить как к процессу, а не статичному результату.
То есть, и источник должен быть такой что отслеживает изменения, обновляя карту, и конвертация из источника в целевой формат должна быть повторяемой и нетрудоёмкой, в идеале полностью автоматизированной.
В финальной версии НМ входит в Москву.

Я решил не писать это как отдельную проблему, так НМ присоединили давно, в большинстве карт она уже есть. Но да, иногда встречается, решение — искать более новые карты
НЛО прилетело и опубликовало эту надпись здесь
Покажите для начала эти открытые данные на госсайтах.
На самом деле это очень правильный вопрос. Я знаю одну карту, Росреестр кажется, кадастровую. Она очень подробная, но в тоже время я не знаю способа, чтобы взять оттуда данные для показа на своем сайте. И еще она чрезвычайно тормозная, настолько, что ей практически и пользоваться невозможно. И когда я подобные данные искал, то насколько помню, нашел только Санкт-Петербург и область, и возможно еще что-то, а карты всей России — не удалось.

Так что чисто теоретически открытые данные по границам должны существовать, а вот практически все грустно, и большинство ссылок ведет все на тот же gis-lab (карты с которого на самом деле давно уже интегрированы в OSM, где на мой взгляд их и следует брать).
Попутали местами )) Это геоданные ОСМ интегрированы в проекты GIS-LAB.

В ОСМ, в свою очередь, все границы нарисованы вручную — где-то по картинке Кадастра с уточнением по спутниковым снимкам, где-то по международным договорам. Лично нарисовал сотни пограничных столбов. Более того, если граница проходит по руслу реки или какому-либо иному природному линейному объекту — значит там будет нарисована река и она включена в состав полилинии границы. Одна геометрия используется разными способами. Изменяем (уточняем) реку — автоматически изменяется граница.

Обычно это не укладывается в голове у пользователей, почему-то все думают что в ОСМ сплошнной импорт. В других странах действительно изначально было много импорта (США, Голландия, Франция и др.). В России всё нарисовано вручную. Максимум это использование трассировщиков для лесов, водоёмов и рек.

Кстати до ОСМ с открытыми векторными данными всё было очень грустно. Как раз GIS-LAB выкладывал векторные карты VMAP0 и VMAP1 производства США. На них без слёз смотреть нельзя… настолько грубые данные с огромнейшим количеством ошибок. Так что от их импорта отказались сразу и бесповоротно.
>Попутали местами )) Это геоданные ОСМ интегрированы в проекты GIS-LAB
Не могу такого исключить, так как не принимал в этом процессе никакого участия. Однако же, видел комментарии на GIS-LAB, что их отдельный проект по административно-территориальному делению РФ там закрыт, и все данные полностью в OSM. То есть, речь только об этом — о границах субъектов.
Видимо у них был свой проект по поддержке админ-границ. Когда ОСМ достиг определенного уровня они переключились на его данные. Они автоматически генерируют проекты и шейпы для ГИС, вроде как на ежедневной основе
gis-lab.info/qa/osm-qgis-projects.html

(добавлено)
Ой, проекты стали платными. Не знал.
>Видимо у них был свой проект по поддержке админ-границ.
Да, мне это именно так и запомнилось.

Росреестр отдельная тема, они там все сделали так, чтобы их карту нельзя было использовать за пределами их сайта. Например она не отдает геометрию участков — только тайловые слои. Даже когда вы кликаете на какой-то участок и он подсвечивается — это не координаты приходят с их сервера, а пнг картинка, которую надо отрисовать поверх карты. Раньше был лайфхак — там у них на бэкенде стоит ArcGIS, и игрой с параметрами запроса можно было выдрать векторный SVG. Но теперь они это прикрыли.
Я в рамках одного проекта сделал костыльное выдирание координат — по кадастровому номеру скачиваю пнг через их апи, выделяю границу и конвертирую ее в geojson полигон. Но работает оно не очень точно из-за погрешностей растеризации, годится только для приблизительной оценки участков.

юзай осм люк!!! :)
Я уже не помню почему эти карты не подошли, видимо не было в GeoJson или полигоны наезжали друг на друга.
Потому что многие регионы до сих пор не зарегистрировали свои границы в Росреестре. Например, новость от 13.12.2018: В течение ближайших трех лет Хакасия обретет границы.
Это на уровне субъектов федерации. На более низких уровнях всё ещё хуже.

Вторая проблема — получение доступа к данным. Хотя бы платного.
Третья проблема — системы координат. Там обычно не классические широта-долгота, а нечто более сложное, и своё для каждого региона. Зачем, точно не знаю, но хотя бы из-за дрейфа континентов (примерно 5 см в год).
Местные системы координат там, потому что чиновники (и не только) в них работают. А работают в них, потому что МСК подогнана таким образом, чтобы искажения при проекции были минимальны. Что не означает, конечно, что это всё не стоило бы публиковать и официально перепроецированным.
А каким то образом дёрнуть карту из OpenStreetMap и выбрать оттуда регионы можно?

Можно. Потом придется их привести к пересечению административных границ и границ суши, генерализовать, преобразовать типы геометрии, добавив избыточность на общих сегментах, перепроецировать со сдвигом, склеить. Ещё можно чуть упростить, запрашивая субъекты по одному и собрать их потом.
Важно также готовить данные в софте, который не встанет раком от пресловутой Чукотки, если в системе координат задан сдвиг, возвращающий её на место.

Почти все что вы написали, придется сделать почти в любом случае.

Вообще, я это проделывал пару раз. Да, более простой способ — достать объекты по одному, через nominatim (от умеет отдавать geojson). Тогда их в принципе можно сразу и показывать (не без проблем, конечно, и закешировав на будущее). Иерархия административного деления в OSM тоже есть, как и новая Москва, разумеется. И второй способ — взять архив, и поработать с ним. Тут посложнее, пожалуй.

Кстати, причина проблемы с Чукоткой вполне может быть гораздо проще (это не значит, что решение станет проще) — в спецификации geojson написано черным по белому, что нужно резать объекты по 180 меридиану. Ну т.е., взяли карты в geojson — ожидайте проблемы. Теоретически — конвертируйте в другой формат, и забудьте. Практически — для веб скорее всего будет лучше в topojson, например.

Ну и да, взять карту в OSM в конечном счете будет гораздо полезнее, чем скачать где-то готовую, пусть даже самую хорошую, по одной простейшей причине — она будет обновляться.
Ну а я разве говорил, что можно иначе?
Да, GeoJSON ограничен спецификацией. Но на нем, естественно, свет клином не сошелся. Хотя для многих задач он удобен. Да и с ним можно применить не очень грязный хак со сдвигом координат, определив CRS с нулевым меридианом, не совпадающим с Гринвичским.
>Ну а я разве говорил, что можно иначе?
Да в общем нет, просто в контексте ответа про OSM это так выглядит.

>CRS с нулевым меридианом, не совпадающим с Гринвичским
Если вам нужна только РФ? Наверное да, просто в общем случае такое не прокатит, чтобы никакие границы через 180 не проходили. Гренландию разве что туда загнать?
Ну, я отвечал на частный комментарий, который звучал как «просто взять данные». Что, на самом деле, не то чтобы совсем-совсем просто.

Про разрезание глобуса без разрезания стран я прямым текстом писал вот в этой статье: habr.com/ru/post/235283
>Что, на самом деле, не то чтобы совсем-совсем просто.
Да я понял. Это просто было мелкое уточнение, что практически в любом случае, какой бы источник карт ни выбрать, это все равно не будет совсем-совсем просто.

Даже если автор считает, что какие-то карты лучшие на сегодня для него — я бы на его месте задумался над тем, что будет, когда эти карты устареют (а судя по отсутствию Новой Москвы — они уже устарели). И как он их будет обновлять.
Угу. Но вот общий алгоритм, который я описал выше, можно полностью автоматизировать, а поддерживать, например, только изменением списка регионов для выгрузки.
Конечно можно)
Вы рассмотрели следующие проблемы:

* Отсутствует Крым

Ну как бы логично, что он отсутствует, это ж часть другой страны. Давайте еще рассмотрим вопрос, почему на карте РФ не отображается калифорнийский федеральный округ.

Товарищ правильно пишет. Крым был захвачен российскими военными в 2014 году, соглашения о передаче Крыма России никогда не было (наоборот: было соглашение о том, что Россия уважает территориальную целостность Украины), значит де-юре это территория Украины. Вы конечно можете включить эти территории в карту, чтобы порадовать сказочного лидера или почувствовать национальную гордость (отжали землю у слабого), ситуация от этого не изменится.


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


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

Если уж и включать, то с пометкой о том, что это временно оккупированная украинская территория до момента решения крымского вопроса.
Если разработчик делает картографический сервис в Украине, то он может включать любые пометки, какие заблагорассудится, с точки зрения ИХ законодательства. В России, полагаю, если делается коммерческий проект, то в самую последнюю очередь автор будет думать о своих политических амбициях, а в первую очередь о популярности своего сервиса. Так что смотря для кого делает.

Кстати многие картографические сервисы, чтобы не иметь проблем с законом на местах, генерируют разные картинки в зависимости от IP посетителя.
Это политический проект, так что делать без крыма не вариант со всех сторон.
значит де-юре это территория Украины

Как уже отметили, положение «де-юре» меняется от юрисдикции к юрисдикции.
Китайская Республика (Тайвань) полвека считала материковый Китай частью своей территории, незаконно оккупированной коммунистическими войсками. Как ни странно, их точку зрения не разделяла ни одна другая страна.
Как ни странно, их точку зрения не разделяла ни одна другая страна.


Вот и с Крымом так.
НЛО прилетело и опубликовало эту надпись здесь
Половину статьи распинаться, как всё сложно в сферических координатах и так и не сделать бесшовную поддержку 190°в.д. — отправляйтесь на пересдачу.
Вот карта на svg со всеми метаданными и крымом.
Если не можете использовать HC, то просто возьмите топооснову.
В любом случае прописать вручную метаданные для каждого региона для svg варианта было бы куда быстрее, чем 3 дня разбираться с проекциями.
Мне кажется, это вылезает за пределы бюджета проекта:
Highmaps Single Developer, 12 months Advantage included
USD 510.00
При разработке своей игрушки GeoPuzzle я тоже встречался с подобными проблемами, даже где-то статья на Хабре была. В итоге полигоны решил брать с сайта https://wambachers-osm.website/boundaries/, а данные из Wikidata — там наиболее удобно.

Если что, проект лежит на GitHub, там все команды для дампа есть в виде менеджмент команд. Код не очень хорошо написан, так что стучитесь в личку, если что.
Если проблема множества бесплатных карт в отсутствии Крыма, не проще его было вручную добавить? JSON ведь открытый текстовый формат.
У меня ровно аналогичный вопрос про Чукотку после преобразования в плоскую двумерную систему координат. По-моему, объединить два полигона и убрать одну(!) прямую (!) линию между ними — работа на пять секунд, и отлично скриптизируется, если автор послушает комментарии и учтёт возможность автоматической генерации обновлённых карт.
Во многих проекциях «левая Чукотка» и «правая Чукотка» не совпадают по форме.
Присоединяюсь к вопросу. Почему ни на одном этапе не пытались ничего доделать сами? Вопрос не риторический, правда не понимаю. Сложно? Долго? Некому?
Тут все просто — geojson не поддерживает геометрии, пересекающие 180 меридиан. Так что если автор берет карты в этом формате — непонятно, почему он удивляется, что Чукотка порезана на куски? Было бы странно, если бы не была (в общепринятых системах координат, с началом отсчета в Гринвиче).

Так что да, в случае любого отсутствующего у вас полигона, новой Москвы к примеру, и в случае Чукотки, работа по добавлению или исправлению совершенно не тянет на статью. Чистая рутина, ну может и не на пять секунд, но никаких нерешаемых проблем не содержит точно. Я помнится, брал Чукотку из формата WKT.
Это один полигон, в том то и дело, я писал об этом. Это нам кажется что Чукотки две из-за проекции, на самом деле она одна.
Разумется. Более того, это проблема на один запрос в номинатим.
НЛО прилетело и опубликовало эту надпись здесь
Удивлён количеством комментариев про Крым. ТС выполняет законы своего государства, и для этого нужно решить некую техническую задачу. Вот её и стоит обсуждать на Хабре, разве нет?
я лично ничего не имею против картографических задач, единственная только просьба — остановиться и честно решить для себя. Каждому занятому в технологиях. Что, когда это будут законы его государства и чисто техническая задача связанная с массовыми технологиями подавления инакомыслия (от внушения «правильных мыслей» и отслеживания «неправильных мыслей» и так далее — весь спектр до «окончательного решения вопроса»), то он будет — честно и прямо сам себя спрашивать: «это все еще техническая задача, или это уже античеловеческая задача?».
Чтобы каждый про себя знал — он такие вопросы у себя спрашивает, и его внутренняя канарейка еще жива.
(ну или не спрашивает, и у него все задачи — технологические. Так что «увеличивать пропускную способность», «уменьшать задержки» и «расширять внедрение» нужно везде, и не задавайте глупых вопросов «кому» и «зачем»)

А карта — ну карта, я даже видел глобусы разных стран…
Что, когда это будут законы его государства и чисто техническая задача связанная с массовыми технологиями подавления инакомыслия (от внушения «правильных мыслей» и отслеживания «неправильных мыслей» и так далее

По российским законам и де-юре и де-факто Крым принадлежит России. Было бы странно если бы автор, живя в России и работая на российскую компанию, отказался добавлять Крым на карту субъектов РФ.

Да и ничего «античеловеческого» в такой задаче нет — жителям Крыма тоже нужны вебсервисы, тоже нужно оформлять паспорта, документы и пр. Наоборот, куда более «античеловечным» выглядит подход некоторых стран вроде Германии в отказе оформления виз или в отказе обслуживания банковских карт и пр. Ведь вредят-то такие «санкции» вовсе не политикам, а обычным людям.

Т.е. ваша идея-то в целом понятна, но непонятно какое отношение это имеет к Крыму. Автор не какое-то страшное устройство для подавления мыслей делает, а делает веб-сервис для своих же граждан, непонятно почему он должен испытывать муки совести по этому поводу.
Непонятно, почему вы думаете, что я написал что-то по отношению к Крыму, а не по отношению к
ТС выполняет законы своего государства, и для этого нужно решить некую техническую задачу. Вот её и стоит обсуждать на Хабре, разве нет?

К автору заметки у меня вообще никаких претензий. У меня возражение было на фразу про «технические задачи» и «законы государства».

Давайте все же остановимся на текущем уровне задачи. Вроде от приписывания полигона к тому или иному набору полигонов никто не умирает, разума не лишается и в послушное стадо не превращается. Отставим принцип "Если бы да кабы во рту росли грибы" и будем профессионалами с адекватной оценкой задач и их последствий.

Что, когда это будут законы его государства и чисто техническая задача связанная с массовыми технологиями подавления инакомыслия (от внушения «правильных мыслей» и отслеживания «неправильных мыслей» и так далее — весь спектр до «окончательного решения вопроса»), то он будет — честно и прямо сам себя спрашивать: «это все еще техническая задача, или это уже античеловеческая задача?».

Вы уж простите, но это рассуждение из серии «сегодня он играет джаз, а завтра родину продаст»

Назовите мне, какой закон обязывает вас рисовать Крым на карте России? Такого закона нет. Вы, как выражался один деятель, "прикрываетесь незаконно полученными бумажками", вместо того, чтобы высказать свое личное мнение. Вопрос Крыма — это вопрос политический, и прикрываться тем, что "государство так решило", не получится. Вы в любом случае тут высказываете свою позицию, государство не может за вас ее сформулировать. Вы можете признавать Крым приобретенной по договорам российской территорией, не признавать, признавать оккупированной территорией Украины, спорной территорией, легитимно полученной территорией, добавить оговорку "согласно законам РФ", итд.


Когда вы ссылаетесь на "закон", вы начинаете напоминать госсми, которые без распоряжения сверху не могут двух слов связать. И не надо возводить закон в абсолют: были законы, по которым ловили беглых негров, были (есть) законы, по которым казнили геев, ограничивают в правах женщин, были законы, по которым "тройки" приговаривали к расстрелу за антисоветские высказывания. А в данном случае вообще закона никакого нет.


Насколько я знаю, есть закон о призывах к нарушению целостности РФ, но высказывание своей позиции призывом не является (предупрежу: это по моему личному мнению, а суд может решить иначе; если вы не доверяете суду, то стоит подумать, почему так вышло и что можно сделать, чтобы суду можно было доверять).


Давайте не будем прикрываться несуществующими "законами", а прямо скажем свое мнение: "я поддерживаю "присоединение" Крыма, потому что .." или "территории X, Y и Z тоже по-хорошему наши исконные земли" или "я работаю на госпредприятии и у меня не может быть другой точки зрения", или "Крым попросил нарисовать заказчик" что-нибудь еще.

Воу, воу, спокойно!=) Если задел личные чувства, искренне прошу прощения – старался быть нейтральным.
Моя логика проста, как топор: если Россия признаёт X чьей-то территорией, то я, как российский гражданин, в любых публичных высказываниях делаю то же самое. Ну там, Кипр — греческий, Тайвань — китайский, и так далее. Своё личное мнение я никому не навязываю и даже, более того, не высказываю, пока не спросят.
Если же вас оно, это мнение, интересует, то оно простое: мне абсолютно всё равно, чей Крым. Вот так вот скучно, да)

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


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

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

Ничего. Закона, который бы обязывал это делать, нет. У официальных картографических ведомств, конечно, могут быть какие-то свои внутренние инструкции, что и как рисовать.


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

Вот я и хочу выяснить, где же список — что можно рисовать спокойно, а что нет. Есть состав РФ, он наверняка где-то записан, и в этом списке Крым и Нижегородская область прописаны одинаково. Наличие такого списка проверять лень, простите)

А что вы имели в виду под словом "спокойно"? Список, который не вызовет споров? Такого нет.


Список (недостоверный) есть в ст. 65 Конституции. Правительство России включило в него Крым как якобы часть России, якобы добровольно вошедшую в её состав, хотя по моему личному мнению, это просто оккупированная российскими военными украинская территория. И такое включение противоречит подписанным Россией международным договорам, где она ранее обязалась уважать независимость и территориальную целостность Украины. Если вы цитируете этот список, то вы высказываете свою позицию — "я поддерживаю захват Крыма российскими военными и нарушение ранее подписанного договора о ядерном разоружении Украины". Если вы используете список без Крыма, то вы высказываетесь за противоположную позицию. Если вам все равно, то не знаю, даже что посоветовать.

Простите, но между вашим личным мнением и Конституцией моей страны я всё же выберу Конституцию=))
Кстати! А ведь формально это и есть закон, по которому нужно рисовать Крым на карте России. Ведь Конституция — основной закон РФ, а граждане РФ по определению подчиняются её законам. Всё очень просто) И личное мнение тут, увы и ах, совершенно ни при чём.
Крым — временно оккупированная территория. Рано или поздно придётся возвращать
youtu.be/gbxr157Iu3A
Тут вам ответ про рано или поздно, а так же кому и как.

Лет 5-6 назад делал интерактивную карту регионов. GeoJSON через d3 перегонялся в svg, а потом и вовсе был экспортирован в него. Проблем было намного меньше: "грязноватые" данные, отсутствие Крыма и границы между некоторыми мелкими республиками. Всё решалось очень просто. Больше всего боли было именно из-за "грязных" данных. Тогда я даже баг репортил в хром, потому что для группы с пустым path границы (boundingRect) определялись нулевыми. В Opera 12, кстати, всё работало идеально.

SVG… GeoJSON, SHP, GeoTIFF, MIF, TAB, KML
Смешались вместе кони, люди…
Можно было вручную оттрасировать скриншот любой более-менее подходящей карты, хоть фотографию настенной на смартфон. Накликать достаточное количество точек мышкой (а лучше с помощью графического планшета) заняло бы полдня.
Пограничные между регионами полигоны дублировть, чтобы в итоге получить замкнутые полигоны каждого региона.
И не нужно было бы погружаться в проекции, форматы и избыточность/противоречивость исходных данных.
Более или менее полноценное что-то получилось бы за те же 2-3 дня. Ну и качество было бы непонятное — в одном месте при наведении мыши на регион появлялись бы данные, а в другом не появлялись, либо появлялись, но от другого региона.
Есть два смежных региона, для простоты треугольные: ABC и BCD. Вносим точки A, D; полигон BC помечаем как общий для двух регионов. Теперь объединяем точки в регионах: ABC, BCD. Добавляем соответствующие данные. Откуда возьмутся неопределённости?
Или Вы о том, что регион может целиком входить в другой регион? Тогда да, некоторые сегменты будут пограничными для нескольких вложенных уровней регионов, эту ситуацию нужно обрабатывать отдельно.
Вы же фотографировать карту предлагали. Чисто для самообразования — посмотрите на карту ещё раз. Как много там препятствий для вашего алгоритма «без неопределённостей»?
СфотографировалСфотографировал. Где Вы видите поле для моего самообразования?
Вижу в неумении понять вопрос. Я не говорил, что нужно сфотографировать готовый (сделанный другими) результат. Я говорил, что нужно сделать самому (ибо требованиям наличные результаты других людей совершенно не удовлетворяют, как это и было в ситуации из статьи).
>> не тратили по 2-3 дня на мучения с картами

То есть все проблемы с картами были решены за 2-3 дня? Эм..., я как-то не въехал — в чём тогда суть проблемы? В том, что на разработку нужно тратить время?

За 2-3 дня накачать карты и наваять нужный функционал — это быстро. Или вы хотели за 1 час? Но если ранее с картами не сталкивались, то за 1 час никак не успеть. Просто никак. Любой геосервис требует некоторого изучения, а без геосервиса делать карту — опять же означает, что надо самому во многих вещах разбираться. И 2-3 дня на это всё — очень быстро. А по меркам толстых контор — вас надо увольнять за срыв сроков проектов всеми остальными, ведь вы всё сделаете быстро, а остальные будут ещё пару месяцев возиться — им же обидно!!!

Ну а по конкретике, найденной за 2-3 дня, всё очень просто — если в проекте чуть другие требования — ваша конкретика становится ненужной и придётся минимум эти же 2-3 дня искать всё необходимое под свои требования. Так что имеем довольно узкое поле для игры с вашей информацией. Так, развлечения ради, почитать, как студенты в карты играли.
… за 1 час никак не успеть. Просто никак. Любой геосервис требует некоторого изучения...
В этом и есть некоторая проблема. Геосервисов много, но нет единого, на который можно было бы всегда полагаться, иначе достаточно было бы изучить один и его использовать.
Бесплатные сервисы не всегда содержат необходимую информацию, использование (условно бес)платных органичено индивидуальным использованием.
Что же вы там за задачки такие клепаете, если для вас потратить на какую-то задачу более трех дней — это прямо беда-беда? Или это такое своеобразное кокетство?
Может их там 10 человек над этой задачей трудилось.
Чтобы не возникали политические оффтопики, автору надо было обозначить, что постановка задачи четко требует показывать Крым и Курилы на карте. Вне зависимости от личных предпочтений, ситуации де-юре, де-факто и чего-либо еще. Если бы там было сказано добавить все 7 российских антарктических станций и половину МКС, это тоже была бы техническая задача для разработчика, а не геополитическая особенность.
По теме: не так уже и много там shapes, чтобы не использовать SVG. Даже вручную их отметить можно было бы за минимальное время. Как при этом делать апдейты — совсем другой вопрос, но в целом тоже решаемый.
С точки зрения регионов мне вообще кажется, что автор не продумал архитектуру для решения задачи. Границы регионов в виде полигонов с координатами доступны, как минимум, из кадастра. Соответственно, карта должна генерировать цепочкой вида «список регионов» -> «оптимальное проецирование» -> «генерация кода с эффектами».
Во-первых, можно нагенерировать карты для более мелкого деления регионов на районы, например.
Во-вторых, появляется возможность оперативно реагировать на изменения политической карты — регион укрупнятся, Крым куда-то отойдёт или Россия опять что-нибудь отожмёт, достаточно изменить исходный список и сделать новый билд.
Границы регионов в виде полигонов с координатами доступны, как минимум, из кадастра.
Выше писали уже про Кадастр, векторных данных в открытом доступе нет.
Однако, чиновничья имитация деятельности делает свое дело — люди, которые не работали с российскими государственными открытыми данными, уверены, что эти данные существуют, находятся в пригодном для использования формате и имеют достаточное для данной задачи качество.
Либо я чего-то не понял, либо… Зачем вообще векторный формат карты, где ещё и полигоны пересекаются. Взять обычный растр png, раскрасить все области в свои цвета и легко определять по цвету любую область, ну а показывать уже что вам нужно, хоть пересекающиеся полигоны
НЛО прилетело и опубликовало эту надпись здесь
Зато очень быстро и без многоугольников, и отрисовывать её на cavase не обязательно, просто хранится в памяти в соответствии с габаритами отображаемой карты
Или другой вариант, хранить в памяти многоугольники по координатам, собственноручно созданные (не такая уж это кропотливая работа)
Какая-то надуманная проблема, ИМХО, ибо даже на странице совсем даже иностранной библиотеки highcharts https://code.highcharts.com/mapdata/ есть ссылки на ассортимент форматов карты России как с Крымом, так и без такового:
Russia Demo SVG GeoJSON Javascript
Russia with disputed territories Demo SVG GeoJSON Javascript
Что это за данные, какой они актуальности, кто поставщик картографической информации по территории России. Надпись на превьюшках Natural Earth говорит о протухлости информации.
Natural Earth is a public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales.
1:110,000,000 — это масштаб пачки Беломора, 1:10M вроде бы на один порядок лучше, т.е. 10 пачек Беломора.

Хорошо если там на данных ОСМ, но тогда этот посредник не нужен, можно обратиться к первоисточнику. А если на VMAP0/VMAP1 — это данные лохматых 80-х, если не ранее.
… не будете вручную прикручивать обработчик событий к каждому полигону и вписывать вручную всю информацию об объекте, от акронимов на разных языках до административного статуса...


Аж прослезился от умиления. svg без метаданных уже не подходит.
Когда передо мной стояла подобная задача выбор стоял такой: flash, flash или flash?

И да, мало того, что пришлось ручками обрисовывать карту, поскольку в векторе нужной не нашлось (именно с областями, а не регионами), так еще и пришлось «прикручивать обработчик событий к каждому полигону и вписывать вручную всю информацию об объекте». Ну, до такого маразма, конечно, дело не дошло — вручную пришлось только прописать айдишники и подтягивать csv, генерируемый сайтом.
НЛО прилетело и опубликовало эту надпись здесь
P.S. Время само всё расставит на свои места, тем более что есть пример, СССР, но как говорится: «есть любимые грабли».
Отлично, даже вы согласились, что на ближайшие 70 лет вопрос с Крымом закрыт.
НЛО прилетело и опубликовало эту надпись здесь
Территория государства — вообще вещь временная. Вон, в Польше вообще нет ни одного клочка земли, который был бы Польшей без перерыва)
Вы принимаете желаемое за действительное. А вот риторика вашего ответа, говорит о том, что даже вы понимаете то что крым в россии — временное явление.
Риторика моего ответа — хватит переливать из пустого в порожнее и выдавать прогнозы на кофейной гуще.

Собака лает — караван идёт ©
НЛО прилетело и опубликовало эту надпись здесь
P.S. Время само всё расставит на свои места, тем более что есть пример, СССР, но как говорится: «есть любимые грабли».
Отлично, даже вы согласились, что на ближайшие 70 лет вопрос с Крымом закрыт.
По сути проблема в отсутствии в открытом доступе нормальной карты.
И по хорошему решать нужно именно ее.
В комментариях много раз упомянули OpenStreetMap, я уточню одно его несомненное преимущество, (кроме открытости и бесплатности), которое осталось за кадром.
В OSM границы регионов хранятся в виде «отношений» — это что-то вроде цепочки из LINESTRING. Граница смежных регионов это всегда единая геометрия, в отличии от SHP-файлов и ГИС, где геометрия дублируется и может разъехаться. По разным причинам — округления, использование разных систем координат для разных регионов (обычно исходные данные в плоских проекциях) и пр.
Это называется «топология», и в этих презираемых вами «ГИС» она была с 70-х годов :)
Гда я написал что я презираю ГИС? Не надо выдумывать. Я просто не успел исправить фразу «несомненное преимущество» на «несомненное достоинство», время редактирования вышло.
Те данные государственных ГИС, которые удавалось видеть в качестве готовых тайлов, действительно хранят админобъекты в виде полигонов. Лично видел несовпадающие границы, пока лазейки доступа к ArcGIS не прикрыли.
Нерадивость сотрудников Росреестра и Роскартографии никак не является преимуществом ОСМ.
Я смотрю вы упорно не замечаете, что я исправил слово «преимущество» на «достоинство». Это очень типично, ухватиться за какую-то мелочь и начать придираться к ней.
Что-же, покажите нам открытые бесплатные данные по административному делению России и всего мира в виде упомянутой вами топологии. А то как про того «суслика» — он где-то там есть для служебного пользования… но мы вам не покажем.
Я придираюсь к некорректному употреблению терминов с видом «типа» эксперта :)

Вообще говоря, восстановить топологию данных, и даже генерализовать данные с учетом топологии позволяет свободное геоинформационное ПО типа QGIS. Конечно же, разобраться в этом куда сложнее, чем требовать готовые данные на блюдечке (впрочем, в ОСМ для вас тоже поработали другие люди, но какая разница).
Уважаемый «эксперт», чем вы помогли автору статьи, хотя бы в комментариях, данными или готовым workflow? Вопрос риторический.

Что касается данных на блюдечке — я довольно активный редактор ОСМ. Если кто-то ими пользуется — нам только в радость, данные созданы как раз для таких случаев, когда покупать коммерческие данные просто нерентабельно. Это с трудом укладывается в голове у держателей проприетарных данных, они разве что зубами не скрипят, такой ломоть пирога у них оттяпали.
Я написал пару статей про работу с данными, этого достаточно? :)
Статьи — это очень хорошо. Правда они так и не решают озвученную автором проблему — где взять данные для проекта с бюджетом 5000 р.
Учитывая что вы тоже пользуетесь данными ОСМ — ваш снобизм не очень понятен. Вы ведь пользуетесь и результатами моих личных трудов тоже ))
За ссылки спасибо. Но лично я потратил день чтобы понять, как же все таки нарисовать области на карте. Чтобы было красиво и не тормозило.
Качественные векторные карты очень тормозят.
Облегченные — не красиво.
Итог:
На основании obulantsev.carto.com/tables/russia_geojson_wgs84/public сделал свой растровый слой с прозрачным фоном на carto.com, а для интерактива сильно облегченный невидимый векторный слой.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории