Yo tendría como objetivo hacer una asignación entre los nombres de las calles y su id de objeto. No sé cuál es el programa que va a utilizar para entrar en el shapefile, pero aquí es un básico de la secuencia de comandos de Python que podría ser de ayuda. Lo bucle a través de la shapefile y registro de cada nombre, y el Oid que coinciden (dado mi parámetros). Usted probablemente tendrá que trabajar en más parámetros para que coincida con ellos mejor. Aquí va:
def IsCloseMatch(name1,name2):
"""If the number of characters is different, returns False.
If more than 95% of the characters are different, returns False.
Otherwise, returns True"""
if not len(name1) == len(name2):
return False
enum1 = enumerate(name1)
enum2 = enumerate(name2)
numberofmatches = 0
for index, char in enum1: # Loop through string character by character
if enum2[index] == char:
numberofmatches += 1
if numberofmatches/len(name1) > .95: # Looking for 95% character match
return True
else:
return False
matches = {} # {name1:[oid1,oid2...], name2:[oid1,oid2...], ...}
for feature in shapefile:
if matches.has_key(feature.streetname):
matches[feature.streetname].append(feature.oid)
else:
for name in matches.keys():
if IsCloseMatch(name,feature.streetname):
matches[name].append(feature.oid) # if matches, add oid
else:
matches[feature.streetname] = [feature.oid] # if not, add new street name
No he añadido ningún capturas si hay uno o dos más cartas, pero es un comienzo. Lo que debe hacer después de la coincidencia de los nombres de las calles y las características que deben ser disuelto depende de las herramientas que está utilizando, pero tal vez esto ayude