perl + .osm

Объективные, объективные :smiley:

Кодировки - это примерно такая же вещь, как указатели в C/C++. Некоторые люди понимают концепцию сразу и без проблем, а до других доходит с большим трудом. Уж насколько в Java простая схема, и то постоянно вызывает проблемы у начинающих… :slight_smile:

Я посмотрел changeset и хочу заметить (совершенно в отрыве от темы), что набор значений тэга принято разделять точками с запятой, а не запятыми :slight_smile:

Не будь эти проблемы объективными, мы бы вообще не знали никаких проблем с кодировками :wink:

Кстати, никто не сравнивал вариант работы с xml через модули Perl с вариантом вызова из perl xmlstarlet ? Что быстрее?

Если ты про source, то к этот конкретный ченжсет его не трогал.

Скажите тогда как мне после чтения из файла через фильтр потом печатать можно было по-русски?

open MYINPUTFILE, ‘<:utf8’, “ru_cs_towns.txt”;
while() {
chomp;
($ru, $cs) = split /:/;
$hash{$cs} = $ru;
print “$cs → $hash{$cs}\n”;
}

Ну в четвёртом же посте написано :slight_smile:

Ещё пачку залил: http://www.openstreetmap.org/browse/changeset/6153635

Так ведь блин одновременно не работает всё равно!

Šumperk → Шумперк
Jaroměř → Яромерж








Чтобы одновременно работало - 23-й пост
http://forum.openstreetmap.org/viewtopic.php?pid=112812#p112812

Можно просто отключить фильтр перед выводом xml-а:
binmode STDOUT;

О, ну вот, это самые крепкие костыли оказались! Заработало :slight_smile:

Предлагаю тебе скопипейстить работающий скрипт на какую-нибудь свою подстраничку на Вики.

Скопипастил:

http://wiki.openstreetmap.org/wiki/User:Ilis/Scripts

Кстати, существует библиотека для правильного расчета расстояний по координатам: GIS::Distance.

Привет, я тут завёл небольшой проектик по приведению территории Украины в порядок. Все исходники лежат здесь: http://github.com/sev-/osm

Там обработка дампов Википедии и работа с OSM XML. Пока оно в зачаточном состоянии, но всё же может кому пригодится.

Eugene

Хелп ми!

Хочу проставить kladr:user по cladr:note для улиц

Отобрал нужные веи и пропустил через фильтр. Остались только хмл-теги веев, без точек.


<osm version='0.6'>
  <way action="modify" id="17191681" version="19" timestamp="2010-07-07T07:53:41Z" uid="127170" user="Ilis" changeset="5156548" visible="true">
    <nd ref="175271064"/>
    <nd ref="175276957"/>
    <nd ref="175270053"/>
    <nd ref="175276958"/>
    <nd ref="579335061"/>
    <nd ref="175276961"/>
    <nd ref="175276963"/>
    <tag k="addr:postcode" v="620000"/>
    <tag k="cladr:code" v="66000001000148000"/>
    <tag k="cladr:name" v="Сибирский (дублер)"/>
    <tag k="cladr:note" v="66000001000148000"/>
    <tag k="cladr:suffix" v="Тракт"/>
    <tag k="highway" v="primary"/>
    <tag k="kladr:user" v="66000001000148000"/>
    <tag k="lit" v="yes"/>
    <tag k="maxspeed" v="60"/>
    <tag k="name" v="дублёр Сибирского тракта"/>
    <tag k="oneway" v="yes"/>
  </way>
  <way action="modify" id="20548341" version="41" timestamp="2010-10-23T16:08:21Z" uid="155079" user="dimuzz" changeset="6147745" visible="true">
    <nd ref="220469204"/>
    <nd ref="220403457"/>
    <nd ref="521687934"/>
    <nd ref="462373971"/>
    <nd ref="521687942"/>
    <nd ref="727665447"/>
    <nd ref="220403462"/>
    <nd ref="961750677"/>
    <nd ref="220403466"/>
    <nd ref="727665628"/>
...

Что случится если я залью этот файл? Точки не пропадут? Или точки тоже надо включить в файл?

Ничего не случилось :slight_smile: Теги добавились, точки не пропали :slight_smile:

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

Должен, но не все может определить. Например, улица Энгельса в КЛАДРе записана как Фридриха Энгельса, он её не понимает.

Подсказки по области были проставлены у 70 примерно улиц, их и перенёс в новый тег.