Государственный каталог географических названий

Вот в первом приближении (gpx)
http://data.gis-lab.ru/mp/gkgn.zip

А можно русский текст в нормальном UTF-8? Искать неудобно.

Это Geo::Gpx так пишет.
Другой писалки с ходу не попалось, а руками писать было лениво


import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

public class Transform
{
 public static void main(String[] args) throws Exception
 {
   Source source = new StreamSource(new File(args[0]));
   Result result = new StreamResult(new File(args[1]));

   TransformerFactory tf = TransformerFactory.newInstance();
 
   Transformer tr = tf.newTransformer();
 
   tr.transform(source, result);
 }
}

Делается тупое копирование содержимого, файлы в результате становятся в 2 раза меньше и в честном UTF-8. :slight_smile:

Парсер лох: всё отваливалось на 1000-й записи.
Исправил, теперь всё полное.
Ссылка та же.

Нда, чуда опять не случилось. Глянул по своему району - смещение от сотен метров до 5 км, часть обьектов несуществующие… Ракеты по этим координатам не долетят, видимо, такой расчет был.

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

Но зато статусная часть!..

Я сразу бросился добавлять урочища! Обожаю locality!

Выяснилась другая беда — из-за округлений часто слипаются нп и причитать названия на экране в JOSM становится нельзя.

Хотелось бы некое раcталкивание.

Спасибо, это очень круто (я про проделанную работу, а не про содержимое - содержимое еще предстоит оценить).
Хотел сделать то же самое, но сломался на этапе OCR’нья PDF’а.

Хочу поинтересоваться:
Этот пакет gpx’ов был создан из какого-то другого источника, нежели PDF (может, у Росреестра где-то то же самое в txt или ином человеческом формате выложено?),
или удалось так ловко распознать такую тяжеловесную таблицу в PDF?
Если последнее - то иначе как чудом я это назвать не могу.
Хотелось бы подробностей, чем и как.

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

И в связи с изложенным выше, вопрос к liosha - а нельзя ли в desc дополнительно в круглых скобках добавить содержание тектового поля “Привязка к другим геогр. объектам”, где оно есть (находится в таблице под координатами, содержит что-то типа “севернее оз. Капшозер”) ?
Понимаю, что распознавать и парсить сложнее, но …

Это без ocr-инья, это через xpdf. А он даёт не таблицу, а набор строчек в несколько перемешанном виде.
И получить что-то более структурированное, чем сейчас, уже сложно.

Теоретически можно попробовать вписать в desc “всё остальное”, но там будет уже мешанина из альтернативных названий и примечаний.

А вот, кстати, еще предложение:

Так как секунд в исходных координатах нет, коорината ‘59 гр. 20 мин’ на самом деле означает любое значение
от ‘59 гр. 20 мин’ до ‘59 гр. 21 мин’ или, в десятичных дробях,
от 59.3333333333333 до 59.35
Т.е. мне кажется, больше трех цифр после десятичной точки - приводить просто не нужно, нет такой точности в исходных координатах.

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

На примере:
Пусть есть две точки, которые имеют одинаковые координаты (из за отсутствующих секунд).

Рассмотрим одну координату - ‘59 гр. 20 мин’
На самом деле, в десятичном виде, с достаточной точностью, она будет 59.34.
Но мы запишем одну точку с координатой 59.342, а другую - 59.349 (т.е. в третью цифру после запятой внесли случайный сдвиг).
И то и другое будет вполне себе ‘59 гр. 20 мин’, но на карте они уже не будут совпадать.

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

Как-то так.

Можно и неслучайное - просто добавлять в младшие разряды порядковый номер точки.

Мне для ГНС (думаю и для этой вещи пригодилось) не хватает скрипта, который сравнивал Допустим этот ГНС по области с выгрузкой области (например с гислаба) и на основе этого делал osm файл в котором содержались пункты ГНС, которые не отражены в файле с областью. Тем самым можно было бы увидеть, что где пропущено.

Ок, вот второе приближение: http://data.gis-lab.ru/mp/gkgn_v2.zip
Добавлены все комментарии в desc и случайное дрожание по широте.

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

Если можно поля таблицы обрабатывать избирательно - то вот например “номенклатура листа карты” там совсем не нужна, а остальные поля нужно разделить хоть каким-то разделителем (как я понял, сейчас добавились еще “Варианты названия”, но без разделителя в строке трудно понять, где “варианты”, а где “привязка”).

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

Максимум что можно - откусить номенклатуру.

То есть точность плюс/минус морская миля? А когда появятся остальные регионы - ничего неизвестно?

Нет, точность = морская миля * sqrt(1+cos(широты)^2) :smiley:

В направлении меридиана точность одна, а в направлении параллели совсем другая, повыше. :3