X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/1c7afef1f2195ab5548dd92bd013217a33691562..1e4c22a03708968ec011edaf72a55a931a4204e0:/utils/tigerAddressImport.py diff --git a/utils/tigerAddressImport.py b/utils/tigerAddressImport.py index c4bca715..b05b7394 100755 --- a/utils/tigerAddressImport.py +++ b/utils/tigerAddressImport.py @@ -3433,7 +3433,7 @@ def fipsstate(fips,countyfp): return tags if fips not in fipscodes: - raise KeyError, 'missing FIPS code', fips + raise KeyError('missing FIPS code', fips) state, statecode, isocode = fipscodes[fips] county_fips_code = fips + "" + countyfp @@ -3478,69 +3478,69 @@ def parse_shp_for_osm( filename ): # WAY ID tags[iSource + ":way_id"] = int( poFeature.GetField("TLID") ) - # FEATURE IDENTIFICATION + # FEATURE IDENTIFICATION mtfcc = poFeature.GetField("MTFCC"); if mtfcc != None: - if mtfcc == "L4010": #Pipeline - tags["man_made"] = "pipeline" - if mtfcc == "L4020": #Powerline - tags["power"] = "line" - if mtfcc == "L4031": #Aerial Tramway/Ski Lift - tags["aerialway"] = "cable_car" - if mtfcc == "L4110": #Fence Line - tags["barrier"] = "fence" - if mtfcc == "L4125": #Cliff/Escarpment - tags["natural"] = "cliff" - if mtfcc == "L4165": #Ferry Crossing - tags["route"] = "ferry" - if mtfcc == "R1011": #Railroad Feature (Main, Spur, or Yard) - tags["railway"] = "rail" - ttyp = poFeature.GetField("TTYP") - if ttyp != None: - if ttyp == "S": - tags["service"] = "spur" - if ttyp == "Y": - tags["service"] = "yard" - tags["tiger:ttyp"] = ttyp - if mtfcc == "R1051": #Carline, Streetcar Track, Monorail, Other Mass Transit Rail) - tags["railway"] = "light_rail" - if mtfcc == "R1052": #Cog Rail Line, Incline Rail Line, Tram - tags["railway"] = "incline" - if mtfcc == "S1100": - tags["highway"] = "primary" - if mtfcc == "S1200": - tags["highway"] = "secondary" - if mtfcc == "S1400": - tags["highway"] = "residential" - if mtfcc == "S1500": - tags["highway"] = "track" - if mtfcc == "S1630": #Ramp - tags["highway"] = "motorway_link" - if mtfcc == "S1640": #Service Drive usually along a limited access highway - tags["highway"] = "service" - if mtfcc == "S1710": #Walkway/Pedestrian Trail - tags["highway"] = "path" - if mtfcc == "S1720": - tags["highway"] = "steps" - if mtfcc == "S1730": #Alley - tags["highway"] = "service" - tags["service"] = "alley" - if mtfcc == "S1740": #Private Road for service vehicles (logging, oil, fields, ranches, etc.) - tags["highway"] = "service" - tags["access"] = "private" - if mtfcc == "S1750": #Private Driveway - tags["highway"] = "service" - tags["access"] = "private" - tags["service"] = "driveway" - if mtfcc == "S1780": #Parking Lot Road - tags["highway"] = "service" - tags["service"] = "parking_aisle" - if mtfcc == "S1820": #Bike Path or Trail - tags["highway"] = "cycleway" - if mtfcc == "S1830": #Bridle Path - tags["highway"] = "bridleway" - tags["tiger:mtfcc"] = mtfcc + if mtfcc == "L4010": #Pipeline + tags["man_made"] = "pipeline" + if mtfcc == "L4020": #Powerline + tags["power"] = "line" + if mtfcc == "L4031": #Aerial Tramway/Ski Lift + tags["aerialway"] = "cable_car" + if mtfcc == "L4110": #Fence Line + tags["barrier"] = "fence" + if mtfcc == "L4125": #Cliff/Escarpment + tags["natural"] = "cliff" + if mtfcc == "L4165": #Ferry Crossing + tags["route"] = "ferry" + if mtfcc == "R1011": #Railroad Feature (Main, Spur, or Yard) + tags["railway"] = "rail" + ttyp = poFeature.GetField("TTYP") + if ttyp != None: + if ttyp == "S": + tags["service"] = "spur" + if ttyp == "Y": + tags["service"] = "yard" + tags["tiger:ttyp"] = ttyp + if mtfcc == "R1051": #Carline, Streetcar Track, Monorail, Other Mass Transit Rail) + tags["railway"] = "light_rail" + if mtfcc == "R1052": #Cog Rail Line, Incline Rail Line, Tram + tags["railway"] = "incline" + if mtfcc == "S1100": + tags["highway"] = "primary" + if mtfcc == "S1200": + tags["highway"] = "secondary" + if mtfcc == "S1400": + tags["highway"] = "residential" + if mtfcc == "S1500": + tags["highway"] = "track" + if mtfcc == "S1630": #Ramp + tags["highway"] = "motorway_link" + if mtfcc == "S1640": #Service Drive usually along a limited access highway + tags["highway"] = "service" + if mtfcc == "S1710": #Walkway/Pedestrian Trail + tags["highway"] = "path" + if mtfcc == "S1720": + tags["highway"] = "steps" + if mtfcc == "S1730": #Alley + tags["highway"] = "service" + tags["service"] = "alley" + if mtfcc == "S1740": #Private Road for service vehicles (logging, oil, fields, ranches, etc.) + tags["highway"] = "service" + tags["access"] = "private" + if mtfcc == "S1750": #Private Driveway + tags["highway"] = "service" + tags["access"] = "private" + tags["service"] = "driveway" + if mtfcc == "S1780": #Parking Lot Road + tags["highway"] = "service" + tags["service"] = "parking_aisle" + if mtfcc == "S1820": #Bike Path or Trail + tags["highway"] = "cycleway" + if mtfcc == "S1830": #Bridle Path + tags["highway"] = "bridleway" + tags["tiger:mtfcc"] = mtfcc # FEATURE NAME if poFeature.GetField("FULLNAME"): @@ -3548,20 +3548,20 @@ def parse_shp_for_osm( filename ): name = poFeature.GetField( "FULLNAME" ) tags["name"] = name - #Attempt to guess highway grade - if name[0:2] == "I-": - tags["highway"] = "motorway" - if name[0:3] == "US ": - tags["highway"] = "primary" - if name[0:3] == "US-": - tags["highway"] = "primary" - if name[0:3] == "Hwy": - if tags["highway"] != "primary": - tags["highway"] = "secondary" + #Attempt to guess highway grade + if name[0:2] == "I-": + tags["highway"] = "motorway" + if name[0:3] == "US ": + tags["highway"] = "primary" + if name[0:3] == "US-": + tags["highway"] = "primary" + if name[0:3] == "Hwy": + if tags["highway"] != "primary": + tags["highway"] = "secondary" divroad = poFeature.GetField("DIVROAD") if divroad != None: - if divroad == "Y" and "highway" in tags and tags["highway"] == "residential": + if divroad == "Y" and "highway" in tags and tags["highway"] == "residential": tags["highway"] = "tertiary" tags["tiger:separated"] = divroad @@ -3618,10 +3618,10 @@ def parse_shp_for_osm( filename ): # ==================================== projcs_wkt = \ """GEOGCS["GCS_North_American_1983", - DATUM["D_North_American_1983", - SPHEROID["GRS_1980",6378137,298.257222101]], - PRIMEM["Greenwich",0], - UNIT["Degree",0.017453292519943295]]""" + DATUM["D_North_American_1983", + SPHEROID["GRS_1980",6378137,298.257222101]], + PRIMEM["Greenwich",0], + UNIT["Degree",0.017453292519943295]]""" from_proj = osr.SpatialReference() from_proj.ImportFromWkt( projcs_wkt ) @@ -3642,12 +3642,12 @@ def length(segment, nodelist): pointid, (lat, lon) = nodelist[ round_point( point ) ] if first: first = False - else: - #The approximate number of feet in one degree of longitute + else: + #The approximate number of feet in one degree of longitute lrad = math.radians(lat) lon_feet = 365527.822 * math.cos(lrad) - 306.75853 * math.cos(3 * lrad) + 0.3937 * math.cos(5 * lrad) - distance += math.sqrt(((lat - previous[0])*lat_feet)**2 + ((lon - previous[1])*lon_feet)**2) - previous = (lat, lon) + distance += math.sqrt(((lat - previous[0])*lat_feet)**2 + ((lon - previous[1])*lon_feet)**2) + previous = (lat, lon) return distance def addressways(waylist, nodelist, first_id): @@ -3657,7 +3657,7 @@ def addressways(waylist, nodelist, first_id): distance = float(address_distance) ret = [] - for waykey, segments in waylist.iteritems(): + for waykey, segments in waylist.items(): waykey = dict(waykey) rsegments = [] lsegments = [] @@ -3666,11 +3666,11 @@ def addressways(waylist, nodelist, first_id): rsegment = [] lastpoint = None - #Don't pull back the ends of very short ways too much - seglength = length(segment, nodelist) - if seglength < float(address_pullback) * 3.0: - pullback = seglength / 3.0 - else: + #Don't pull back the ends of very short ways too much + seglength = length(segment, nodelist) + if seglength < float(address_pullback) * 3.0: + pullback = seglength / 3.0 + else: pullback = float(address_pullback) if "tiger:lfromadd" in waykey: lfromadd = waykey["tiger:lfromadd"] @@ -3687,88 +3687,88 @@ def addressways(waylist, nodelist, first_id): if "tiger:rtoadd" in waykey: rtoadd = waykey["tiger:rtoadd"] else: - rtoadd = None + rtoadd = None if rfromadd != None and rtoadd != None: right = True - else: - right = False + else: + right = False if lfromadd != None and ltoadd != None: left = True - else: - left = False + else: + left = False if left or right: - first = True + first = True firstpointid, firstpoint = nodelist[ round_point( segment[0] ) ] finalpointid, finalpoint = nodelist[ round_point( segment[len(segment) - 1] ) ] for point in segment: pointid, (lat, lon) = nodelist[ round_point( point ) ] - #The approximate number of feet in one degree of longitute + #The approximate number of feet in one degree of longitute lrad = math.radians(lat) lon_feet = 365527.822 * math.cos(lrad) - 306.75853 * math.cos(3 * lrad) + 0.3937 * math.cos(5 * lrad) #Calculate the points of the offset ways if lastpoint != None: - #Skip points too close to start - if math.sqrt((lat * lat_feet - firstpoint[0] * lat_feet)**2 + (lon * lon_feet - firstpoint[1] * lon_feet)**2) < pullback: - #Preserve very short ways (but will be rendered backwards) - if pointid != finalpointid: - continue - #Skip points too close to end - if math.sqrt((lat * lat_feet - finalpoint[0] * lat_feet)**2 + (lon * lon_feet - finalpoint[1] * lon_feet)**2) < pullback: - #Preserve very short ways (but will be rendered backwards) - if (pointid != firstpointid) and (pointid != finalpointid): - continue + #Skip points too close to start + if math.sqrt((lat * lat_feet - firstpoint[0] * lat_feet)**2 + (lon * lon_feet - firstpoint[1] * lon_feet)**2) < pullback: + #Preserve very short ways (but will be rendered backwards) + if pointid != finalpointid: + continue + #Skip points too close to end + if math.sqrt((lat * lat_feet - finalpoint[0] * lat_feet)**2 + (lon * lon_feet - finalpoint[1] * lon_feet)**2) < pullback: + #Preserve very short ways (but will be rendered backwards) + if (pointid != firstpointid) and (pointid != finalpointid): + continue X = (lon - lastpoint[1]) * lon_feet - Y = (lat - lastpoint[0]) * lat_feet + Y = (lat - lastpoint[0]) * lat_feet if Y != 0: - theta = math.pi/2 - math.atan( X / Y) - Xp = math.sin(theta) * distance - Yp = math.cos(theta) * distance + theta = math.pi/2 - math.atan( X / Y) + Xp = math.sin(theta) * distance + Yp = math.cos(theta) * distance else: Xp = 0 - if X > 0: + if X > 0: Yp = -distance - else: + else: Yp = distance - if Y > 0: - Xp = -Xp - else: - Yp = -Yp - - if first: - first = False - dX = - (Yp * (pullback / distance)) / lon_feet #Pull back the first point - dY = (Xp * (pullback / distance)) / lat_feet - if left: + if Y > 0: + Xp = -Xp + else: + Yp = -Yp + + if first: + first = False + dX = - (Yp * (pullback / distance)) / lon_feet #Pull back the first point + dY = (Xp * (pullback / distance)) / lat_feet + if left: lpoint = (lastpoint[0] + (Yp / lat_feet) - dY, lastpoint[1] + (Xp / lon_feet) - dX) lsegment.append( (id, lpoint) ) - id += 1 - if right: + id += 1 + if right: rpoint = (lastpoint[0] - (Yp / lat_feet) - dY, lastpoint[1] - (Xp / lon_feet) - dX) rsegment.append( (id, rpoint) ) - id += 1 + id += 1 - else: - #round the curves - if delta[1] != 0: - theta = abs(math.atan(delta[0] / delta[1])) - else: - theta = math.pi / 2 - if Xp != 0: - theta = theta - abs(math.atan(Yp / Xp)) - else: theta = theta - math.pi / 2 - r = 1 + abs(math.tan(theta/2)) - if left: - lpoint = (lastpoint[0] + (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] + (Xp + delta[1]) * r / (lon_feet * 2)) + else: + #round the curves + if delta[1] != 0: + theta = abs(math.atan(delta[0] / delta[1])) + else: + theta = math.pi / 2 + if Xp != 0: + theta = theta - abs(math.atan(Yp / Xp)) + else: theta = theta - math.pi / 2 + r = 1 + abs(math.tan(theta/2)) + if left: + lpoint = (lastpoint[0] + (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] + (Xp + delta[1]) * r / (lon_feet * 2)) lsegment.append( (id, lpoint) ) id += 1 - if right: + if right: rpoint = (lastpoint[0] - (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] - (Xp + delta[1]) * r / (lon_feet * 2)) - + rsegment.append( (id, rpoint) ) id += 1 @@ -3778,116 +3778,116 @@ def addressways(waylist, nodelist, first_id): #Add in the last node - dX = - (Yp * (pullback / distance)) / lon_feet - dY = (Xp * (pullback / distance)) / lat_feet - if left: + dX = - (Yp * (pullback / distance)) / lon_feet + dY = (Xp * (pullback / distance)) / lat_feet + if left: lpoint = (lastpoint[0] + (Yp + delta[0]) / (lat_feet * 2) + dY, lastpoint[1] + (Xp + delta[1]) / (lon_feet * 2) + dX ) lsegment.append( (id, lpoint) ) id += 1 - if right: + if right: rpoint = (lastpoint[0] - Yp / lat_feet + dY, lastpoint[1] - Xp / lon_feet + dX) rsegment.append( (id, rpoint) ) id += 1 #Generate the tags for ways and nodes - rtags = [] - ltags = [] - tags = [] + rtags = [] + ltags = [] + tags = [] zipr = '' zipl = '' name = '' county = '' - if "tiger:zip_right" in waykey: - zipr = waykey["tiger:zip_right"] + if "tiger:zip_right" in waykey: + zipr = waykey["tiger:zip_right"] rtags.append( "" % zipr ) - if "tiger:zip_left" in waykey: - zipl = waykey["tiger:zip_left"] + if "tiger:zip_left" in waykey: + zipl = waykey["tiger:zip_left"] ltags.append( "" % zipl ) if "name" in waykey: name = waykey["name"] tags.append( "" % name ) - if "is_in:state" in waykey: - state = waykey["is_in:state"] + if "is_in:state" in waykey: + state = waykey["is_in:state"] tags.append( "" % state ) - if "tiger:county" in waykey: - county = waykey["tiger:county"] + if "tiger:county" in waykey: + county = waykey["tiger:county"] tags.append( "" % county ) - if "is_in:country_code" in waykey: - country = waykey["is_in:country_code"] + if "is_in:country_code" in waykey: + country = waykey["is_in:country_code"] tags.append( "" % country ) - if "tiger:separated" in waykey: - separated = waykey["tiger:separated"] - else: - separated = "N" - ltags.extend(tags) - rtags.extend(tags) + if "tiger:separated" in waykey: + separated = waykey["tiger:separated"] + else: + separated = "N" + ltags.extend(tags) + rtags.extend(tags) #Write the nodes of the offset ways - if right: + if right: rlinestring = []; for i, point in rsegment: rlinestring.append( "%f %f" % (point[1], point[0]) ) - if left: + if left: llinestring = []; for i, point in lsegment: llinestring.append( "%f %f" % (point[1], point[0]) ) - if right: + if right: rsegments.append( rsegment ) - if left: + if left: lsegments.append( lsegment ) - rtofromint = right #Do the addresses convert to integers? - ltofromint = left #Do the addresses convert to integers? - if right: - try: rfromint = int(rfromadd) - except: - print("Non integer address: %s" % rfromadd) - rtofromint = False - try: rtoint = int(rtoadd) - except: - print("Non integer address: %s" % rtoadd) - rtofromint = False - if left: - try: lfromint = int(lfromadd) - except: - print("Non integer address: %s" % lfromadd) - ltofromint = False - try: ltoint = int(ltoadd) - except: - print("Non integer address: %s" % ltoadd) - ltofromint = False - import_guid = time.strftime( '%Y%m%d%H%M%S' ) - if right: - id += 1 + rtofromint = right #Do the addresses convert to integers? + ltofromint = left #Do the addresses convert to integers? + if right: + try: rfromint = int(rfromadd) + except: + print("Non integer address: %s" % rfromadd) + rtofromint = False + try: rtoint = int(rtoadd) + except: + print("Non integer address: %s" % rtoadd) + rtofromint = False + if left: + try: lfromint = int(lfromadd) + except: + print("Non integer address: %s" % lfromadd) + ltofromint = False + try: ltoint = int(ltoadd) + except: + print("Non integer address: %s" % ltoadd) + ltofromint = False + import_guid = time.strftime( '%Y%m%d%H%M%S' ) + if right: + id += 1 interpolationtype = ""; - if rtofromint: + if rtofromint: if (rfromint % 2) == 0 and (rtoint % 2) == 0: - if separated == "Y": #Doesn't matter if there is another side + if separated == "Y": #Doesn't matter if there is another side # ret.append( "" ) interpolationtype = "even"; - elif ltofromint and (lfromint % 2) == 1 and (ltoint % 2) == 1: + elif ltofromint and (lfromint % 2) == 1 and (ltoint % 2) == 1: interpolationtype = "even"; # ret.append( "" ) - else: + else: interpolationtype = "all"; # ret.append( "" ) elif (rfromint % 2) == 1 and (rtoint % 2) == 1: - if separated == "Y": #Doesn't matter if there is another side + if separated == "Y": #Doesn't matter if there is another side interpolationtype = "odd"; # ret.append( "" ) - elif ltofromint and (lfromint % 2) == 0 and (ltoint % 2) == 0: + elif ltofromint and (lfromint % 2) == 0 and (ltoint % 2) == 0: interpolationtype = "odd"; # ret.append( "" ) - else: + else: interpolationtype = "all"; # ret.append( "" ) - else: + else: interpolationtype = "all"; # ret.append( "" ) - else: + else: interpolationtype = "all"; # ret.append( "" ) -# ret.extend(rtags) +# ret.extend(rtags) # ret.append( "" % (iSource, VERSION, import_guid) ) # ret.append( "" % (iAttrib) ) # ret.append( "" ) @@ -3895,27 +3895,27 @@ def addressways(waylist, nodelist, first_id): ret.append( "select tigger_create_interpolation(ST_GeomFromText('LINESTRING(%s)',4326), '%s', '%s', '%s', '%s', '%s', '%s');" % ( ",".join(rlinestring), rfromadd.replace("'", "''"), rtoadd.replace("'", "''"), interpolationtype.replace("'", "''"), name.replace("'", "''"), county.replace("'", "''"), zipr.replace("'", "''") ) ) - if left: - id += 1 - if ltofromint: + if left: + id += 1 + if ltofromint: if (lfromint % 2) == 0 and (ltoint % 2) == 0: - if separated == "Y": + if separated == "Y": interpolationtype = "even"; - elif rtofromint and (rfromint % 2) == 1 and (rtoint % 2) == 1: + elif rtofromint and (rfromint % 2) == 1 and (rtoint % 2) == 1: interpolationtype = "even"; - else: + else: interpolationtype = "all"; elif (lfromint % 2) == 1 and (ltoint % 2) == 1: - if separated == "Y": + if separated == "Y": interpolationtype = "odd"; - elif rtofromint and (rfromint %2 ) == 0 and (rtoint % 2) == 0: + elif rtofromint and (rfromint %2 ) == 0 and (rtoint % 2) == 0: interpolationtype = "odd"; - else: + else: interpolationtype = "all"; - else: + else: interpolationtype = "all"; - else: + else: interpolationtype = "all"; ret.append( "select tigger_create_interpolation(ST_GeomFromText('LINESTRING(%s)',4326), '%s', '%s', '%s', '%s', '%s', '%s');" % ( ",".join(llinestring), lfromadd.replace("'", "''"), ltoadd.replace("'", "''"), interpolationtype.replace("'", "''"), name.replace("'", "''"), county.replace("'", "''"), zipl.replace("'", "''") ) ) @@ -4023,7 +4023,7 @@ def compile_waylist( parsed_gisdata, blank_way_id ): #Group by iSource:way_id for geom, tags in parsed_gisdata: way_key = tags.copy() - way_key = ( way_key[iSource + ':way_id'], tuple( [(k,v) for k,v in way_key.iteritems()] ) ) + way_key = ( way_key[iSource + ':way_id'], tuple( [(k,v) for k,v in way_key.items()] ) ) if way_key not in waylist: waylist[way_key] = [] @@ -4031,7 +4031,7 @@ def compile_waylist( parsed_gisdata, blank_way_id ): waylist[way_key].append( geom ) ret = {} - for (way_id, way_key), segments in waylist.iteritems(): + for (way_id, way_key), segments in waylist.items(): if way_id != blank_way_id: ret[way_key] = glom_all( segments ) @@ -4047,42 +4047,42 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): import_guid = time.strftime( '%Y%m%d%H%M%S' ) - print "parsing shpfile" + print("parsing shpfile") parsed_features = parse_shp_for_osm( shp_filename ) - print "compiling nodelist" + print("compiling nodelist") i, nodelist = compile_nodelist( parsed_features ) - print "compiling waylist" + print("compiling waylist") waylist = compile_waylist( parsed_features, blank_way_id ) filenumber = 1 objectcount = 0 seen = {} - print "preparing address ways" + print("preparing address ways") ret = addressways(waylist, nodelist, i) osm_filename = "%s%d.osm" % (base_filename, filenumber) - print "writing %s" %osm_filename + print("writing %s" %osm_filename) fp = open( osm_filename, "w" ) fp.write( "\n".join( ret ) ) fp.close() filenumber += 1 - print "constructing osm xml file" + print("constructing osm xml file") ret = [] ret.append( "" ) ret.append( "" ) - for waykey, segments in waylist.iteritems(): + for waykey, segments in waylist.items(): for segment in segments: - #write the nodes + #write the nodes for point in segment: id, (lat, lon) = nodelist[ round_point( point ) ] if id not in seen: seen[id] = True - #write node + #write node ret.append( " " % (id, lat, lon) ) ret.append( " " ) objectcount += 1 @@ -4090,7 +4090,7 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): pass #print "Skipping node %d" %id - #write the way + #write the way ret.append( " " % i ) ids = [ nodelist[ round_point( point ) ][0] for point in segment ] @@ -4099,7 +4099,7 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): for id in ids: count += 1 ret.append( " " % id ) - if (count % Max_Waylength == 0) and (count != len(ids)): #Split the way + if (count % Max_Waylength == 0) and (count != len(ids)): #Split the way for k, v in waykey: ret.append( " " % (k, escape(str(v))) ) ret.append( " " % (iSource, VERSION, import_guid) ) @@ -4107,7 +4107,7 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): ret.append( " " ) objectcount += 1 - i += 1 + i += 1 ret.append( " " % i ) ret.append( " " % id ) @@ -4121,10 +4121,10 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): i += 1 - if objectcount > maxNodes: #Write a file + if objectcount > maxNodes: #Write a file ret.append( "" ) osm_filename = "%s%d.osm" % (base_filename, filenumber) - print "writing %s" %osm_filename + print("writing %s" %osm_filename) fp = open( osm_filename, "w" ) fp.write( "\n".join( ret ) ) fp.close() @@ -4139,7 +4139,7 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): ret.append( "" ) osm_filename = "%s%d.osm" % (base_filename, filenumber) - print "writing %s" %osm_filename + print("writing %s" %osm_filename) fp = open( osm_filename, "w" ) fp.write( "\n".join( ret ) ) fp.close() @@ -4147,7 +4147,7 @@ def shape_to_osm( shp_filename, base_filename, blank_way_id ): if __name__ == '__main__': import sys, os.path if len(sys.argv) < 2: - print "%s filename.shp [filename.osm]" % sys.argv[0] + print("%s filename.shp [filename.osm]" % sys.argv[0]) sys.exit() shape = sys.argv[1] if len(sys.argv) > 2: @@ -4155,6 +4155,6 @@ if __name__ == '__main__': else: osm = shape[0:-4] + ".osm" id = "1.shp" - # Left over from massGIS unknown usage, but works fine hardcoded to "1.shp" which was the valu on a test of the actual mass data, - #id = os.path.basename(shape).split("_")[-1] + # Left over from massGIS unknown usage, but works fine hardcoded to "1.shp" which was the valu on a test of the actual mass data, + #id = os.path.basename(shape).split("_")[-1] shape_to_osm( shape, osm, id )