Parte final de OpenStreetMap: llenar la jerarquía de direcciones

En la primera parte , recortamos una ciudad condicional de un gran conjunto de datos y solo dejamos datos con una dirección. Las direcciones se interpretaron como pertenecientes a esta ciudad. Aquellos. sabía exactamente en qué país se encontraban, en qué región, etc. Pero, ¿qué pasa si necesitamos las direcciones no de una localidad, sino de toda una región, o tal vez incluso de varios países? ¿Cómo sabes de dónde es?

Y aunque en OpenStreetMap es posible indicar en cada casa en qué país, región y más abajo en la jerarquía se encuentra, en Rusia se usa un método abreviado, es decir, solo calle y numero de casa. Todo el trabajo de mono en la estructuración de la dirección lo hará la computadora. Lo hará más rápido y correctamente, si, por supuesto, todos los datos necesarios estarán a su disposición.

Formación

Experimentaré en Saransk , o mejor dicho, en su distrito urbano, recortándolo con un rectángulo, con la siguiente cobertura: el borde inferior (45 54), el superior (45,5 54,3). Guardo el corte del volcado en formato pbf, porque la siguiente herramienta funciona con él:

osmconvert -b=45,54,45.5,54.3 RU-local.o5m -o=SaranskGO.pbf

Ahora la idea es agregar etiquetas a todos los edificios con una dirección en la que se encuentran ubicados. Esto se calculará mediante la introducción de la geometría de la casa en el contorno del asentamiento. Para hacer esto, necesitamos el complemento OsmAreaTag para ósmosis (una descripción más detallada del complemento del autor ). El autor publicó la versión compilada del complemento aquí . La ósmosis ense puede recoger del github . Es una aplicación Java , por lo que está claro con qué no funcionará.

Instalación del complemento

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.

Figura 1 addr: city no es lo mismo que addr: city-auto
.1 addr:city addr:city-auto

Se puede ver que aldeas enteras están designadas incorrectamente. Esto es basura en nombre del asentamiento. Esta es la confusión de la ciudad de Saransk y el municipio del mismo nombre, que incluye varios asentamientos. O viceversa, en el lugar del nombre de la aldea, se ingresa allí el nombre del asentamiento rural. En el territorio de la ciudad en sí, puede ver varias docenas de puntos donde había errores tipográficos en el nombre. Como dije antes: deje este negocio a las máquinas, donde se puede equivocar, una persona se equivocará.

Ahora solo se ha asignado el nombre del asentamiento. Lo mismo puede hacerse por analogía para la vinculación a asentamientos y regiones de países.




All Articles