Bagian terakhir OpenStreetMap: mengisi hierarki alamat

Pada bagian pertama , kami memotong kota bersyarat dari kumpulan data besar dan hanya menyisakan data dengan alamat di dalamnya. Alamat-alamat itu ditafsirkan sebagai milik kota ini. Itu. tahu persis di negara mana mereka berada, di wilayah mana, dan sebagainya. Tetapi bagaimana jika kita membutuhkan alamat bukan hanya satu lokalitas, tetapi seluruh wilayah, atau mungkin bahkan beberapa negara? Bagaimana Anda tahu dari mana asalnya?

Dan meskipun di OpenStreetMap dimungkinkan untuk menunjukkan pada setiap rumah di negara mana, wilayah dan lebih jauh hierarkinya, di Rusia metode singkat digunakan - yaitu hanya nomor jalan dan rumah. Semua pekerjaan monyet pada penataan alamat akan dilakukan untuk kita oleh komputer. Dia akan melakukannya dengan lebih cepat dan lebih benar, jika, tentu saja, semua data yang diperlukan ada di tangannya.

Latihan

Saya akan bereksperimen di Saransk , atau lebih tepatnya, di distrik perkotaannya - dengan memotongnya dengan persegi panjang, dengan cakupan sebagai berikut: batas bawah (45 54), atas (45,5 54,3). Saya menyimpan potongan dari dump dalam format pbf, karena alat berikut bekerja dengannya:

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

Sekarang idenya adalah untuk menambahkan tag ke semua bangunan dengan alamat di mana pemukiman mereka berada. Ini akan dihitung dengan masuknya geometri rumah ke dalam kontur pemukiman. Untuk ini kita membutuhkan plugin OsmAreaTag untuk osmosis (penjelasan lebih rinci tentang plugin dari pembuatnya ). Penulis memposting versi terkompilasi dari plugin di sini . Osmosis sendiri dapat diambil dari github . Ini adalah aplikasi Java , jadi jelas apa yang tidak akan berhasil tanpanya.

Menginstal 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.

Gambar 1 addr: city tidak sama dengan addr: city-auto
.1 addr:city addr:city-auto

Terlihat bahwa seluruh desa tidak ditetapkan dengan benar. Ini hanya sampah atas nama pemukiman. Ini adalah kebingungan kota Saransk dan kotamadya dengan nama yang sama, yang mencakup beberapa permukiman. Atau sebaliknya, di tempat nama desa dimasukkan nama desa permukiman di sana. Di wilayah kota itu sendiri, Anda bisa melihat beberapa lusin titik di mana terdapat salah cetak nama. Seperti yang saya katakan sebelumnya: serahkan bisnis ini pada mesin, di mana Anda dapat membuat kesalahan, seseorang akan membuat kesalahan.

Sekarang hanya nama pemukiman yang telah ditetapkan. Hal yang sama dapat dilakukan dengan analogi untuk mengikat permukiman dan wilayah negara.




All Articles