Example #1
0
#
# Walk through all OSM ways checking for ones with no name
#
for way in osm_tree.findall('way'):
    named=False
    uuid=None
    for tag in way.findall('tag'):
        if tag.attrib['k'] == 'name':
            named=True
        elif tag.attrib['k'] == 'geobase:uuid':
            uuid=tag.attrib['v']

    if named == False and uuid != None:
        #Apply StatsCan Name        
        if nameMatchHandler.nameHash.has_key(uuid):
            
            nameTags=nameMatchHandler.nameHash[uuid]
            name = nameTags['NAME']
            if nameTags['TYPE'] != None:
                name = name + expandStreetType(nameTags['TYPE'])
            if nameTags['DIRECTION'] != None:
                name = name + ' ' + nameTags['DIRECTION']
            way.append(ET.Element('tag', k='name', v=name))
            way.append(ET.Element('tag',k='statscan:rbuid',v=nameTags['RB_UID']))
        #has key
    #not named
#for

osm_tree.write(options.outputfile)

Example #2
0
    def completeWay(self):
          self.completed=True  
          #Post Processing.
          #Exclude nodes that are not in the bounding region.
          shape=LineString(self.coords)
          #print "Checking Intersection on %s"  % str(self.coords)      
          if (self.boundary<>None and self.boundary.intersects(shape)==False ):
              #Mark this object as excluded + incomplete
              self.outOfBounds=True
              return          

          for coord in self.coords:
              key = str(coord[0]) + '-' + str(coord[1])
              if not self.nodehash.get(key):
                  node_id = str(len(self.nodes))
                  newnode = ET.Element("node", visible='true', id=node_id, lat=str(coord[1]), lon=str(coord[0]))
                  self.nodes.append(newnode)
                  self.nodehash[key] = node_id

              self.way_element.append(ET.Element('nd', ref=self.nodehash[key]))
                  
                 
          self.localize()          
          # Catch all transcanada/yellowhead highway segments that we may have missed  
          if self.tags.has_key('alt_name:en'):
            if ('TransCanada Highway' in self.tags['alt_name:en'] or 'Yellowhead Highway' in self.tags['alt_name:en']) and self.tags['highway'] != 'motorway':
              self.tags['highway'] = 'trunk'
              if 'TransCanada Highway' in self.tags['alt_name:en']:
                self.tags['nat_name:en']='TransCanada Highway'
                self.tags['nat_name:fr']='Route Transcanadienne'
              if 'Yellowhead Highway' in self.tags['alt_name:en']:
                self.tags['nat_name:en']='Yellowhead Highway'
           # Convert the sets back to semicolon separated strings      
          if self.tags.has_key('ref'):      
              self.tags['ref'] = setToString(self.tags['ref']);
          if self.tags.has_key('name')==False:
              if self.dataset <> 'Quebec' and self.tags.has_key('alt_name:en'):
                  self.tags['name']=setToString(self.tags['alt_name:en'])
              elif self.tags.has_key('alt_name:fr'):
                  self.tags['name']=setToString(self.tags['alt_name:fr'])
              if self.tags.has_key('alt_name:en'):
                  self.tags['alt_name:en'] = setToString(self.tags['alt_name:en'])
          if self.tags.has_key('alt_name:en'):
                self.tags['alt_name:en'] = setToString(self.tags['alt_name:en'])
          if self.tags.has_key('alt_name:fr'):
                self.tags['alt_name:fr'] = setToString(self.tags['alt_name:fr'])
          if self.placeName != None:
                self.placeName=self.placeName + ',' + self.dataset
          else:          
              self.placeName=self.dataset
              if self.placeName != None:
                  #Only set is in, if we at least have a province.
                  self.placeName=self.placeName + ',Canada'
          self.tags['is_in']=self.placeName
                # Convert the tags to xml nodes
                
          #
          # If no name is defined, check nameHash
          # to see if one is available in the external
          # dataset.
          if not  self.tags.has_key('name'):
              uuid=self.tags['geobase:uuid']              
              if  self.nameHash.has_key(uuid) :
                  nameTags=self.nameHash[uuid]
                  if nameTags['NAME'] != None:
                      self.tags['name'] = nameTags['NAME']
                      if nameTags['TYPE'] != None:
                          self.tags['name']=self.tags['name'] + expandStreetType(nameTags['TYPE'])
                      if nameTags['DIRECTION'] != None:
                          self.tags['name']=self.tags['name']+ ' '+ nameTags['DIRECTION']
                      if nameTags['RB_UID'] != None:
                          self.tags['statscan:rbuid'] = nameTags['RB_UID']
                      
                          
                  #TODO filter out Unknown etc...
          
          for key, value in self.tags.iteritems():
              self.way_element.append(ET.Element('tag', k=key,v=value))
          self.way_element.append(ET.Element('tag',k='attribution',v=self.attribution))
          self.way_element.append(ET.Element('tag',k='source',v=self.source))
          self.nid=self.tags['geobase:uuid']
          self.tags = None