OpenStreetMapの最後の部分:アドレス階層を埋める

非常に最初の部分は、我々は大規模なデータセットから条件付きの街を切り取って、その中のアドレスとデータのみを残しました。住所はこの都市に属するものとして解釈されました。それら。彼らがどの国にいるのか、どの地域にいるのかなどを正確に知っていました。しかし、1つの地域ではなく、地域全体、あるいは複数の国の住所が必要な場合はどうでしょうか。彼がどこから来たのかどうやってわかりますか?

また、OpenStreetMapでは、どの国、地域、さらには階層の下位にあるかを各家に示すことができますが、ロシアでは省略された方法が使用されます。通りと家の番号のみ。アドレスの構造化に関するすべてのサルの作業は、コンピューターによって行われます。もちろん、必要なすべてのデータを自由に使えるようになれば、彼はそれをより速く、より正確に行うでしょう。

トレーニング

私はサランスク、またはむしろその市街地で、次の範囲で長方形切り抜くことによって実験します:下の境界線(45 54)、上の境界線(45.5 54.3)。次のツールが機能するため、ダンプからのカットをpbf形式で保存します。

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

全体的なアイデアは、すべての建物に、それらが配置されている集落の住所を持つタグを追加することです。これは、集落の輪郭に家の形状を入力することによって計算されます。これを行うにはosmosisOsmAreaTagプラグインが必要です作成者によるプラグインの詳細な説明)。著者は、プラグインのコンパイル済みバージョンをここに投稿しました浸透自体githubから取得できますこれはJavaアプリケーションであるため、これなしでは機能しないことは明らかです。

プラグインのインストール

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.

図1addr:cityはaddr:city-autoと同じではありません
.1 addr:city addr:city-auto

村全体が間違って指定されていることがわかります。これは和解の名の下にただのごみです。これは、サランスク市と同じ名前の自治体の混乱であり、いくつかの集落が含まれています。逆に、村の名前の代わりに、田舎の集落の名前がそこに入力されます。街自体の領土では、名前にタイプミスがあった数十のポイントを見ることができます。私が前に言ったように:あなたが間違いを犯すことができる機械にこのビジネスを任せなさい、人は間違いを犯すでしょう。

これで、和解の名前だけが割り当てられました。同じことは、国の集落や地域への拘束についての類推によって行うことができます。




All Articles