Na primeira parte , cortamos uma cidade condicional de um grande conjunto de dados e deixamos apenas os dados com um endereço. Os endereços foram interpretados como pertencentes a esta cidade. Essa. sabiam exatamente em que país estavam, em que região e assim por diante. Mas e se precisarmos dos endereços não de uma localidade, mas de toda a região, ou talvez até de vários países? Como você sabe de onde ele é?
E embora no OpenStreetMap seja possível indicar em cada casa em que país, região e mais abaixo na hierarquia, na Rússia é usado um método abreviado - ou seja, apenas a rua e o número da casa. Todo o trabalho do macaco na estruturação do endereço será feito para nós pelo computador. Ele o fará de forma mais rápida e correta se, é claro, todos os dados necessários estiverem à sua disposição.
Treinamento
Vou experimentar em Saransk , ou melhor, em seu distrito urbano - recortando-o com um retângulo, com a seguinte cobertura: limite inferior (45 54), superior (45,5 54,3). Eu salvo o corte do dump no formato pbf, porque a seguinte ferramenta funciona com ele:
osmconvert -b=45,54,45.5,54.3 RU-local.o5m -o=SaranskGO.pbf
Agora a ideia é adicionar etiquetas a todos os edifícios com o endereço no qual estão localizados os assentamentos. Isso será calculado pela entrada da geometria da casa no contorno do assentamento. Para fazer isso, precisamos do plugin OsmAreaTag para osmose (uma descrição mais detalhada do plugin do autor ). O autor postou a versão compilada do plugin aqui . A própria osmose pode ser obtida no github . É um aplicativo Java , então está claro do que ele não funcionará sem.
Instalando o plugin
osmosis osmareatag plugins , . , windows c:\Users\<>\.openstreetmap\osmosis\plugins
c:\Users\<>\AppData\Roaming\openstreetmap\osmosis\plugins
. , osmareatag-1.3.zip plugins.
. :
<?xml version="1.0" encoding="UTF-8"?>
<tag-processing>
<area id="national-boundary" cache-file="national-boundary.idx">
<match type="relation">
<tag k="boundary" v="administrative"/>
<tag k="admin_level" v="2"/>
</match>
</area>
<transform>
<name>Country</name>
<match>
<tag k="building" v=".*"/>
<tag k="addr:housenumber" v=".*"/>
<inside area="national-boundary"/>
</match>
<output>
<add-tag k="addr:country" v="${ISO3166-1}" context-area="national-boundary"/>
</output>
</transform>
</tag-processing>
— . area
id
, , . match
, OSM, . , .. . cache-file
OSM . - , - , . , .
— , transform
. match
, : inside
, area
.
, output
, , , , , national-boundary
ISO3166-1
. , .
, , , . . , , .
:
<?xml version="1.0" encoding="UTF-8"?>
<tag-processing>
<area id="place">
<match>
<tag k="place" v="city|town|village|hamlet|isolated_dwelling|allotments"/>
</match>
</area>
<transform>
<name>Place</name>
<match>
<tag k="building" v=".*"/>
<tag k="addr:housenumber" v=".*"/>
<inside area="place"/>
</match>
<output>
<add-tag k="addr:city-auto" v="${name}" context-area="place"/>
</output>
</transform>
</tag-processing>
addr:city-auto
, , OSM. osm-xml, . :
call osmosis-0.48.3\bin\osmosis.bat --read-pbf SaranskGO.pbf --lp --tag-area-content file=tag-building-addr-place.xml --write-xml SaranskGO.place.osm
tag-building-addr-place.xml
- , .
.. - , . , . . .
<way id="103738775" version="2" timestamp="2019-09-20T18:28:15Z" uid="10124028" user="MarinaAR" changeset="74731679">
<nd ref="1197639591"/>
<nd ref="1197639690"/>
<nd ref="1197639206"/>
<nd ref="1197639237"/>
<nd ref="1197639591"/>
<tag k="building" v="yes"/>
<tag k="addr:city" v=""/>
<tag k="addr:street" v=" "/>
<tag k="addr:housenumber" v="5"/>
<tag k="addr:city-auto" v=""/>
</way>
, . , , , CSV, QGIS. OSM, OSM , .. - . CSV.

Pode ser visto que aldeias inteiras estão designadas incorretamente. Isso é apenas lixo em nome do assentamento. Essa é a confusão da cidade de Saransk com o município de mesmo nome, que inclui vários assentamentos. Ou vice-versa, no local do nome da aldeia, está inserido o nome do assentamento rural. No próprio território da cidade, você pode ver várias dezenas de pontos onde havia erros de digitação no nome. Como eu disse antes: deixe esse negócio para as máquinas, onde você pode errar, a pessoa comete um erro.
Agora apenas o nome do assentamento foi atribuído. O mesmo pode ser feito por analogia para vinculação a assentamentos e regiões de países.