1 votos

¿Crear automáticamente polígonos a partir de las coordenadas superior derecha e inferior izquierda?

Tengo un archivo CSV con cientos de registros. Cada registro contiene 2 coordenadas coincidentes, 1) esquina superior derecha de un rectángulo, 2) esquina inferior izquierda de un rectángulo.

Polygon ID, Lat 1,       Lat 2,       Long 1,       Long 2          
1,          27o 28' 28", 27o 33' 30", 86o 06' 04",  86o 15' 00"

¿Hay algún método que pueda utilizar para automatizar la creación de estos polígonos? Preveo que hay unos cuantos pasos.

1voto

Markus Olsson Puntos 12651

Para ser exhaustivo, a continuación proporciono la solución que implementé.

  1. Conversión de coordenadas a grados decimales en Excel utilizando un macro simple .
  2. Se han añadido columnas adicionales que representan las 2 esquinas no presentes en el archivo original. Por lo tanto, las 4 esquinas se almacenaron en el archivo.
  3. Se ha añadido un campo ID (un ID para cada conjunto de 4 puntos (esquinas).
  4. He importado el CSV a ArcGIS y he trazado los puntos.
  5. Convertimos los puntos en polígonos utilizando el campo ID. Esto dio lugar a la capa final de polígonos de la "huella".

0voto

Siyu Song Puntos 41

Esto me funciona: Formato CSV(XTR,YTR,XBL,YBL)

gp.CreateFeatureclass(path,name, "POLYGON")
cur = gp.InsertCursor (path+name)
open csv file
for each line in csvFile:

coordinates=split.line(",")

x1=float(xpcoordinates[0])
y1=float(xpcoordinates[1])

x2=float(xpcoordinates[0])-float(deltaX)
y2=float(xpcoordinates[1])

x3=float(xpcoordinates[2])
y3=float(xpcoordinates[3])

x4=float(xpcoordinates[2])+float(deltaX)
y4=float(xpcoordinates[3])

x5=float(xpcoordinates[0])
y5=float(xpcoordinates[1])

xyarray.append(str(x1)+","+str((y1)))
xyarray.append(str(x2)+","+str((y2)))
xyarray.append(str(x3)+","+str((y3)))
xyarray.append(str(x4)+","+str((y4)))
xyarray.append(str(x5)+","+str((y5)))

row = cur.NewRow()

PolygonArray = gp.CreateObject ("Array")
pnt = gp.CreateObject ("Point")

pnt.x = x1
pnt.y = y1
PolygonArray.add(pnt)

pnt.x = x2
pnt.y = y2
PolygonArray.add(pnt)

pnt.x = x3
pnt.y = y3
PolygonArray.add(pnt)

pnt.x = x4
pnt.y = y4
PolygonArray.add(pnt)

row.shape = PolygonArray
cur.InsertRow(row)

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