12 votos

usando bien formada: la traducción entre Polígonos y Multipolígonos

[EDIT: la solución a esto fue simplemente utilizar OGR a leer los shapefiles. Ver geographika del ejemplo.]

En un shapefile de ESRI, no hay distinción entre Polígonos y Multipolígonos. Además, no es explícito la distinción entre los agujeros interiores y exteriores de los anillos (además de la "imparcialidad" de un determinado polígono).

Así que después de la lectura de un shapefile, tengo una lista de coordinar las secuencias que describen los anillos, pero sin algunas de las más intensivo de procesamiento, me no se puede distinguir cual de estos anillos están exterior de los anillos, los agujeros interiores o polígonos adicionales.

Parece que para bien formada's Polígono y Multipolígono constructores, debe haber una clara distinción entre el exterior y en el interior de los anillos, así que ¿cómo debo pasar de un claro en la lista de los anillos de un conjunto ordenado de separados polígonos, con una finalidad claramente designado interior y exterior de los anillos?

Para resumir: si tengo una lista de polígono de los anillos, pero no sé que suena son agujeros en el interior o son polígonos separados, ¿cómo debo mejor clasificarlos en distintos polígonos con designada los agujeros interiores?

Estoy buscando una simple solución algorítmica que puedo implementar en python, se puede utilizar para procesar cientos de polígonos en ~un minuto o menos, y estoy haciendo esto con el fin de realizar un gran número de intersecciones.

10voto

Swinders Puntos 1042

Más de relet la respuesta sobre cómo obtener polígonos individuales, a continuación, puede ejecutar una intersección en todos los polígonos para crear los agujeros. Si el conjunto de datos contiene la superposición de polígonos pesar de que está fuera de suerte.

Explicar de nuevo lo que está mal con las shapefile de los lectores?

No sería más fácil para la exportación de Identificaciones y los valores de M desde el archivo de forma y, a continuación, unirse de nuevo a los polígonos después de usar una existente shapefile lector?

Para multiparches puede utilizar la misma técnica de asignar polígono IDs a un "parche ID" y, a continuación, añadir este atributo a las características.

Edit: Mientras que usted dice que usted no desea utilizar OGR, sólo en caso de que usted cambie su mente..

import ogr
# Get the driver
driver = ogr.GetDriverByName('ESRI Shapefile')
# Open a shapefile
shapefileName = "D:/temp/myshapefile.shp"
dataset = driver.Open(shapefileName, 0)

layer = dataset.GetLayer()
for index in xrange(layer.GetFeatureCount()):
    feature = layer.GetFeature(index)
    geometry = feature.GetGeometryRef()
    #geometry for polygon as WKT, inner rings, outer rings etc. 
    print geometry

La geometría debe ser la salida de la siguiente manera:

POLYGON ((79285 57742,78741 54273...),(76087 55694,78511 55088,..))

El primer soporte contiene las coordenadas de el anillo exterior, posterior soportes de la coords del interior de los anillos. Si usted tiene los valores Z de los puntos deben estar en el formato 79285 57742 10 (donde el último coord es una altura).

De lo contrario, se podría utilizar el bien formada, Contiene Dentro de las funciones a evaluar cada polígono con cada uno de los otros y aplicar un índice espacial de antemano - http://pypi.python.org/pypi/Rtree/ para acelerar el procesamiento.

1voto

Frank Krueger Puntos 27508

No estoy demasiado familiarizado con la forma de los polígonos que se almacenan en forma de archivos, pero no un polígono anillo de ser un bucle cerrado si y sólo si la coordenada de inicio se repite? Así que si usted comparar cada uno de los siguientes coordinar con la coordenada de inicio encontrarás el primer punto en un polígono cerrado. Si es el último de coordenadas de la poligonal, se trata de un simple polígono, si no, es un multipolígono y requiere el procesamiento de los otros bucles.

Que podría ser el 'más intensivo de procesamiento' que queremos evitar, pero es realmente sólo una iteración a través de las coordenadas que viene gratis cuando usted tiene una lectura de todos modos.

-2voto

UnkwnTech Puntos 21942

En la p.21 de la Shapefile Especificación he encontrado una discusión de Interior, Exterior y los Primeros Anillos que puede ser lo que usted está después.

  • Graeme

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X