0

小さな地域をキャプチャした OSM ファイルがあります。 http://pastebin.com/xeWJsPeY

多くの余分な解析を行う Python コードがありますが、主な問題の例を以下に示します。

import xml.etree.cElementTree as CET
osmfile = open('osm_example.osm','r')
for event, elem in CET.iterparse(osmfile,events = ('start',)):
    if elem.tag == 'way':
        if elem.get('id') == "21850789":
            for child in elem:
                print CET.tostring(child,encoding='utf-8')
    elem.clear()

ここや他の場所で、特定のエントリのタグが欠落していることに気付きました (ここで、tag は のような要素です。私が見る限り、 <tag k="highway" v="residential" />すべての要素が正しく読み取られました。<nd .../>

ファイルを処理するときに気付いたもう 1 つのことは、タグtostring()付きの要素で使用'way'すると、要素の読み取りにエラーがある場合<tag .../>、末尾に改行が追加されないことです。たとえば、実行中

for event, elem in CET.iterparse(osmfile,events = ('start',)):
    if elem.tag == 'way':
        print CET.tostring(elem,encoding='utf-8')
    elem.clear()

<tag .../>要素が欠落しているエントリの出力は次のとおりです。

<nd ref="235476200" />
  <nd ref="1865868598" /></way><way changeset="12727901" id="21853023" timestamp="2012-08-14T15:23:13Z" uid="451048" user="bbmiller" version="8" visible="true">
  <nd ref="1865868557" />

うまく形成されたものに対して、

 <tag k="tiger:zip_left" v="60061" />
  <tag k="tiger:zip_right" v="60061" />
 </way>
 <way changeset="15851022" id="21874389" timestamp="2013-04-24T16:33:28Z" uid="451693" user="bot-mode" version="3" visible="true">
  <nd ref="235666887" />
  <nd ref="235666891" />

ここで起こっている問題は何ですか?

4

1 に答える 1