Forum Blog
pix

Obteniendo informacion espacial de objetos en ArcGIS

Este articulo describe como obtener las principales caracteristicas geometricas de objetos espaciales. Para calcularlas no es necesario utilizar software o extensiones adicionales. Aqui se explican los siguientes tipos geometricos y sus caracteristicas espaciales relativas:

Tipo de objeto

Característica espacial

Liga

Punto

Coordenada en X
Coordenada en Y

ir

Linea

Longitud

ir

Poligono

Longitud (perimetro)
Area

ir

Para aquellos que han usado software como Mapinfo, probablemente notaran que no existe una forma sencilla de ver las caracteristicas espaciales de un objeto con un solo click, ya sea un punto una linea o un polígono. En ArcGIS es imposible entontrar dichas características con solo seleccionar el objeto. Sin embargo, y aunque parezca inconveniente, hay cierta logica en ello.

La razon es que la sola inspeccion visual de los objetos espaciales no tiene mucho sentido. Es mucho mas útil tener datos de la geometria de los datos dentro de la tabla de atributos y trabajar con los datos desde ahi. Tambien es posible, si es necesario, organizar monitoreos constantes y actualizar los valores de atributos relacionados con la geometria de un objeto que cambia. Esta filosofia es utilizada en las estaciones de trabajo con ArcInfo, ya que ahi se trabaja con los datos en el propio formato de la cobertura. Esto puede tener sentido si es necesario realizar una serie de operaciones espaciales y debemos hacer un seguimiento de los cambios en las caracteristicas espaciales, ya que estas ultimas son el reflejo de la geometria de los objetos.

Es necesario remarcar que las caracteristicas espaciales son propiedades de la geometria de los objetos. En ArcView GIS y ArcGIS el formato shape permite obtener estos datos a traves del campo "Shape". Esto permite relacionar la geometria a partir de la tabla y puede ser utilizada para extraer algunos datos de la cobertura.

Al calcular caracteristicas espaciales es importante recordar que las unidades de salida seran las mismas que las unidades internas de la fuente de datos. Por lo tanto:

  • Si los datos estan en un sistema de coordenadas geograficas, entonces despues de extraer las caracteristicas espaciales los datos resultantes estaran en grados decimales, sin importar si la cobertura tiene o no la proyeccion definida )esto es aceptable para puntos, pero no para longitudes o areas)
  • Si los datos estan en un sistema de coordenadas desconocido, entonces los calculos seguiran realizandose, pero las unidades resultantes permaneceran desconocidas tambien.

Inclusive seria posible obtener datos metricos acerca de caracteristicas espaciales, aun si los datos carecen de proyeccion (estando en un sistema de coordenadas geograficas), si existen datos de proyeccion de la ventana de datos (dataframe). Para estos calculos es importante recordar que sistema de coordenadas se utilizo para los calculos ya que los resultados pueden variad de acuerdo a la proyeccion utilizada.

Bueno, para actualizar la tabla de atributos de todos los objetos de una sola vez, es necesarioÑ

1. Abrir la tabla de atributos con el boton derecho del raton sobre la cobertura, para objetos de los cuales sea necesario calcular las caracteristicas espaciales. Escoge Open Attribute Table.

2. Crear el campo o campos con formato entero o flotante, dependiendo del tipo de dato que se desee calcular. Options\Add Field...

3. Escoger la via de entrada de datos con el boton derecho del raton en el encabezado del campo y escogiendo Calculate Values...

4. En la calculadora de campos (Field Calculator) hay que cambiarse a modo avanzado (Advanced mode)

5. En la caja de texto de codigo Pre-logico de VBA (Pre-logic VBA Script Code) es necesario escribir una de las siguientes expresiones, que nos daran las caracteristicas espaciales de los datos desde el campo Shape, este campo es el que contiene la geometria del objeto.

1. Caracteristicas de los polígonos :

Area

Expresion para obtener caracteristicas espaciales de las datos en las mismas unidades internas y sistema de coordenadas de la cobertura. La cobertura y la ventana de datos (dataframe) pueden estar tanto en coordenadas geograficas como cualquier sistema de coordenadas, el resultado sera el mismo ya que no es dependiente del sistema de coordenadas de la ventana de datos (dataframe):

Dim Output as double
Dim pArea as IArea
Set pArea = [shape]
Output = pArea.area

Remarcando, este comando no dara los resultados esperados si los datos estan inicialmente en proyeccion geografica y no importa si la ventana de datos esta proyectada o no. Sin embargo, si se esta trabajando con datos vectoriales que estan proyectados, usar esta expresion puede ser mas sencillo y ahorrar tiempo.

Para obtener caracteristicas espaciales en sistemas metricos utilizando datos almacenados en un sistema de coodenadas geografico y proyectado al vuelo (on the fly) en ArcGIS, es necesario modificar la expresion como sigue:

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pSR As ISpatialReference
Set pSR = pMap.SpatialReference
Dim pPolygon As IPolygon
Dim pArea as IArea
Set pPolygon = [Shape]
pPolygon.Project pSR
Set pArea = pPolygon
Output = pArea.area

En la ultima caja de texto, justo debajo de donde dice "area =" es necesario poner Output. Output es el nombre de la variable que contiene el resultado de los calculos para cada registro (=feature).

Area es el nombre del campo en el de los resultados del calculo seran almancenados. En caso necesario es posible utilizar otro nombre de campo en vez de Area.

Perimetro

Expresión para una ventana de datos sin proyectar, los datos pueden estar en sistemas de coordenadas geograficas o proyectadas:

Dim Output as double
Dim pCurve as ICurve
Set pCurve = [shape]
Output = pCurve.Length

Expresión para una ventana de datos los datos pueden estar en sistemas de coordenadas geograficas o proyectadas. El valor de las caracteristicas espaciales reportadas será calculado en las unidades proyectadas y utilizando la proyeccion de la ventana de datos(dataframe):

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pSR As ISpatialReference
Set pSR = pMap.SpatialReference
Dim pCurve As ICurve
Set pCurve = [Shape]
pCurve.Project pSR
Output = pCurve.Length

En la ultima caja de texto, justo debajo de donde dice "perimeter =" es necesario poner Output. Output es el nombre de la variable que contiene el resultado de los calculos para cada registro (=feature).

Perimeter es el nombre del campo en el que los resultados seran alamcenados, tambien es posible utilizar otro nombre de campo.

2. Caracteristicas lineales:

Longitud

Expresión para una ventana de datos sin proyectar, los datos pueden estar en sistemas de coordenadas geograficas o proyectadas:

Dim Output as double
Dim pCurve as ICurve
Set pCurve = [shape]
Output = pCurve.Length

Expresión para una ventana de datos los datos pueden estar en sistemas de coordenadas geograficas o proyectadas. El valor de las caracteristicas espaciales reportadas será calculado en las unidades proyectadas y utilizando la proyeccion de la ventana de datos(dataframe):

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pSR As ISpatialReference
Set pSR = pMap.SpatialReference
Dim pCurve As ICurve
Set pCurve = [Shape]
pCurve.Project pSR
Output = pCurve.Length

En la ultima caja de texto, justo debajo de donde dice "length =" es necesario poner Output. Output es el nombre de la variable que contiene el resultado de los calculos para cada registro (=feature).

Length es el nombre del campo en el que los resultados seran almacenados, tambien es posible utilizar otro nombre de campo.

3. Caracteristicas para puntos:

Coordenadas

Para obtener coordenadas es necesario crear dos campos y dos expresiones diferentes, una para la latitud y la otra para la longitud.

Expresión para una ventana de datos sin proyectar, los datos pueden estar en sistemas de coordenadas geograficas o proyectadas:

Para la longitud:


Dim pPoint As IPoint
Set pPoint = [Shape]
output = pPoint.x

En la ultima caja de texto, justo debajo de donde dice "long =" es necesario poner Output. Output es el nombre de la variable que contiene el resultado de los calculos para cada registro (=feature).

Para la latitud:

Dim pPoint As IPoint
Set pPoint = [Shape]
output = pPoint.y

En la ultima caja de texto, justo debajo de donde dice "lat =" es necesario poner Output. Output es el nombre de la variable que contiene el resultado de los calculos para cada registro (=feature).

Expresión para una ventana de datos los datos pueden estar en sistemas de coordenadas geograficas o proyectadas. El valor de las caracteristicas espaciales reportadas será calculado en las unidades proyectadas y utilizando la proyeccion de la ventana de datos(dataframe):

Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pSR As ISpatialReference
Set pSR = pMap.SpatialReference
Dim pPoint As IPoint
Set pPoint = [Shape]
pPoint.Project pSR

En la ultima caja de texto, justo debajo de donde dice "long =" o "lat =" es necesario poner pPoint.x y pPoint.y respectivamente.

lat ylong son los nombres de los campos cuyos resultados del calculo serán almancenados. se pueden usar nombres distintos.

Estas expresiones muestran como los datos espaciales pueden ser solicitados al sistema para obtener y modificar ciertas caracteristicas acerca de ellas, tando espaciales como de atributo. Estas ediciones se utilizan con la opcion Calculate con VBA dentro de ArcGIS.

Обсудить в форуме (Комментариев - 0)

Last update: August 03 2007
(Top)

E-mail:
Enter 3 digits: Enter 3 digits from the picture

Comment, question, bug report: (?)

If you've found a typo or other mistake select a fragment of text with it and hit Ctrl+Enter (?)

About : Article : Software : Forum (all) : Docs : Contacts : Русский

Site news:(?)