4 votos

InsertCursor en ArcGIS Pro no entender mis coordenadas

Estoy tratando de usar el arcpy.da.InsertCursor para agregar puntos simples en una clase de entidad, pero no funciona para mí, como cada punto solo puedo añadir termina en un lugar cerca de París. Aquí es el más simple bloque de código que no funciona para mí:

arcpy.CreateFeatureclass_management(' (my path here) ...\Map.gdb','Hotspots2', 'POINT')
a = arcpy.Point(7, 7)
cursor = arcpy.da.InsertCursor("Hotspots2",["SHAPE@XY"])
cursor.insertRow([a])
del cursor

Termina aquí:

Paris, ugh

en coordinar ~ (3.3, 48). Lo coordenadas de ingresar a una no importa el resultado. Si me cambio a un punto de la geometría no funciona. Si yo uso la FORMA@ y un punto de la geometría también no funciona. Cada maldito punto termina allí. ¿Qué estoy haciendo mal y alguien puede probar a ver si tienen el mismo resultado??

5voto

Bob Rivers Puntos 111

Realmente yo no trabajo en ArcGIS, pero en general, SIG perspectiva parece como si se le puede introducir coordenadas en un sistema de coordenadas diferente a la utilizada por la ventana del mapa. ¿Has comprobado que tu entrada de coordenadas de utilizar el mismo sistema que el de la ventana del mapa?

Esas coordenadas (3.3, 48) se asignan correctamente utilizando WGS84, donde se espera que ellos mapa?

4voto

JiyuuSensei Puntos 236

Creo que cuando se crea un punto a través de la arcpy.Point({x},{y}) , uno debe usar SHAPE@, no SHAPE@XY en el cursor:

InsertCursor - ayuda:

La FORMA@XY -UNA tupla de la función del centro de gravedad de coordenadas x,y.

La FORMA@ -UNA geometría del objeto de la entidad.

Trate de ajustar ese campo en el cursor, que es como yo estoy insertando puntos en mi guión.

Si eso no funciona, pruebe a establecer las X e y como un string, que es como yo estoy utilizando dentro de arcpy.Point({x},{y}).

4voto

Anton8000 Puntos 165

Cuando el uso de la FORMA@ token el cursor está a la espera de una geometría. Están creando esta con arcpy.Punto:

import arcpy
pointfc = r'C:\TEST.gdb\point'

a = [arcpy.Point(5,7)]

cursor = arcpy.da.InsertCursor(pointfc, ['SHAPE@'])
cursor.insertRow(a)
del cursor

Si desea utilizar la FORMA@XY token el cursor está a la espera de una tupla, por ejemplo (5,7) :

import arcpy
pointfc = r'C:\TEST.gdb\point'

a = (5,7)

cursor = arcpy.da.InsertCursor(pointfc, ['SHAPE@XY'])
cursor.insertRow((a,))
del cursor

3voto

Kasprzol Puntos 2954

Trate de usar arcpy.PointGeometry objeto en vez de punto.
Sugerencia 2: no definir la referencia espacial de la clase de entidad. Esto significa que es de heredar desde cualquiera que sea su dataframe. Lo más probable es que va en como web mercator, pero supongo que quieres WGS-1984.

De la ayuda: CreateFeatureclass_management (out_path, out_name, {geometry_type}, {template}, {has_m}, {has_z}, {spatial_reference}, {config_keyword}, {spatial_grid_1}, {spatial_grid_2}, {spatial_grid_3})

Para crear la referencia espacial de objetos y realizar la inserción hacer lo siguiente:

 sr = arcpy.SpatialReference(4326)
 coords = [(3.3, 48) ]
 fc = arcpy.CreateFeatureclass_management(r'<path>', '<name>', 'POINT', spatial_reference=sr)[0] 
 cursor = arcpy.da.InsertCursor(fc,['SHAPE@XY'])
 for coord in coords:
     cursor.insertRow([coord])
     del coord
 del cursor

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