Geometrical entities for analysis of geographical entities in Geographic Information Systems using oriented object data modeling

Texto completo

(1)

© Los autores. Este artículo es publicado por la Revista del Instituto de Investigación de la Facultad de Ingeniería Geológica, Minera, Metalúrgica y Geográfica de la Universidad Nacional Mayor de San Marcos. Este es un artículo de acceso abierto, distribuido bajo * Ingeniero Geógrafo. Egresado de la maestría en Ciencias Ambientales, mención en Gestión y Ordenamiento Ambiental del Territorio de la Universidad Nacional Mayor de San Marcos.

Lima, Perú. Editor del blog Ingeografos (www.ingeografos.com.pe) - mfespinozapereyra@gmail.com

Uso de entidades geométricas para el análisis de entidades

geográficas en los Sistemas de Información Geográfica

usando el modelado de datos orientado a objetos

Geometrical entities for analysis of geographical entities in Geographic

Information Systems using oriented object data modeling

Marcos Fidel Espinoza Pereyra*

Recibido: Octubre 2017 - Aprobado: Junio 2018

RESUMEN

El presente artículo propone una metodología (usando el modelado de datos orientado a objetos) en la utilización de entidades geométricas tales como Punto, Polilínea y Polígono de una manera abstracta con el fin de usar sus propiedades y algunas funciones para luego ser usados en los Sistemas de Información Geográfica (GIS en sus siglas en ingles) de una manera automatizada y entendible en la programación y/o automatización de algoritmos facilitando su aplicación para la representación de entidades geográficas. Al final del presente artículo se expondrán algunos ejemplos

sencillos de la implementación de cada abstracción para su mejor entendimiento.

Palabras clave: Programación orientada a objetos; geometría computacional; topologías; datos espaciales; entidades geográficas; abstracción

de geometrías.

ABSTRACT

This paper proposes a methodology (using Object-oriented data modeling) to use geometrical entities such as “Point” (Punto in Spanish), “Polyline” (Polilínea in Spanish) and “Polygon” (Polígono in Spanish) using an abstract way using their properties and some functions upon themselves, in order to use them in Geographic Information Systems (GIS) Programming in an easier way to represent geographical entities. The last part you can see

some simple examples about performing these abstractions.

(2)

I. INTRODUCCIÓN

En este artículo se presentan algoritmos para la implementación de abstracciones de entidades geométricas

con el fin de representar entidades geográficas halladas en un espacio geográfico para su análisis en los Sistemas de Información Geográfica. Para ello se apoya en el modelado de datos orientada a objetos que ayuda en ver las propiedades de un objeto y el comportamiento del mismo

ante una acción, todo esto de una forma sistémica interna

(objeto y sus componentes) y externa (objeto y su entorno).

La abstracción de una geometría usando el modelado

de datos orientada a objetos significa en crear una Variable que contenga una cantidad de otras Variables subordinadas

(donde se guardaran algunas propiedades inherentes de la geometría y del objeto que se desea representar) y Funciones

lógico-matemáticas (donde las variables subordinadas interactúan para devolver una magnitud de una propiedad de la geometría) necesarias para que pueda existir y se

pueda manipular la información que se guarde en ella

de una manera entendible y dinámica. Las herramientas usadas para los Sistemas de Información Geográfica, necesitan una manera de analizar el entorno geográfico y sus entidades (objetos y fenómenos) en forma de variables (geométricas y descripciones) que puedan ser entendidas de manera sencilla tanto para la propia herramienta como el usuario de la misma, además que tenga una manera más simple para leer y escribir información geométrica.

II. MARCO CONCEPTUAL

El modelado de datos orientada a objetos está basado en el

paradigma de la programación orientado a objetos que da

un enfoque diferente del mundo informático que implica la creación de modelos del mundo real y la creación de modelos que traten de explicar sus elementos y procesos (Joyanes, L., 1996).Con este tipo de enfoque se analiza a un objeto desde sus propios elementos y datos que lo conforman y eventos que es capaz de realizar el mismo objeto (Sánchez, J., 2010). Trabajos como el de Posada, N. & Sol, D. (S.F.); Chen, Y., Wang, Z. & Chen, Z. (2012); Albuquerque, K. (2002) y García, J. (1994) hablan del uso

que se le puede dar a este paradigma en los trabajos de

los Sistemas de Información Geográfica para el tratamiento de datos y por ende, ser capaz de ser un sistema que pueda gestionar datos geográficos georeferenciados;

con este enfoque es posible relacionarlo con un espacio

geográfico, conformado de objetos y fenómenos dinámicos (Tolaba, A., Caliusco, M. & Galli, M., 2013; Martínez-Rosales, M. & Levachkine, S., 2014) que pueden estar o no relacionados entre ellos y con el entorno mismo que pueden ser modelados para un mejor entendimiento. Estos objetos y fenómenos son capaces de ser representados por vectores (puntos, polilíneas y polígonos), para luego ser manipulados, analizados y dibujados para algún propósito que le dé el usuario final.

Estas entidades, objetos y fenómenos que están en un espacio geográfico pueden ser representados con geometrías o vectores (Vela, A., Fernández, M. & Castaño, S., 1997) que según su naturaleza y la escala de representación serian

(agrupación cerrada de Puntos) y usando algoritmos lógicos-matemáticos en forma de funciones dentro de estas geometrías pueden dar propiedades o valores referentes sobre área, perímetro, longitud, y otras propiedades que el analista crea conveniente para su investigación. También permite usar dichas geometrías como variables para ser usadas en modelos matemáticos para realizar simulaciones del mundo real.

Ejemplos de una utilización del modelado de los

elementos de un espacio geográfico por geometrías se encuentran en lo expuesto por Kumar, M., Bhatt, G. & Duffy, C. (2010) para un modelamiento hidrológico distribuido que apoyándose en las geometrías y algoritmos puede hacer que el proceso sea más dinámico y flexible

para obtener mejores resultados o lo presentado por Liria,

J. (2008) donde apoyándose del trazo de un taxón desde sus coordenadas primarias y utilizando algoritmos entre

estas coordenadas, puede realizar un trabajo de estadística

espacial para realizar estudios panbiogeográficos o el trabajo de Rodríguez, R. & Lazo, M. (2013) que mediante algoritmos sobre geometrías se determina la ruta más óptimo entre una red de caminos e impactando su beneficio en el tiempo y costo de un viaje.

III. METODOLOGIA

La metodología consiste en ir desde un objeto – geometría simple (Punto) hacia geometrías complejas (Polilínea

y Polígono) que es un conjunto de Puntos relacionado

entre sí. Supone también la jerarquización por agrupación de estas geometrías (Huang, M., Zhu, L., Liu, P., Wang, J. & Guo, L., 2015) donde los algoritmos presentes en geometrías (de mayor orden) como Polilínea y Polígono

recaen en Puntos (geometrías de menor orden). 3.1 Abstracción de la geometría Punto

La abstracción de la geometría Punto se puede considerar

el inicio de las demás abstracciones geometrías presentadas en el siguiente artículo. Si se crea la Variable Punto, se

puede definir con la siguiente estructura:

Variable Punto

Variable X, para la coordenada Longitud o Este, de carácter obligatorio;

Variable Y, para coordenada Latitud o Norte, de carácter obligatorio;

Variable Z, para el valor de la Altitud o de la Cota, de carácter opcional;

Variable M, para un valor que se desee guardar, de carácter opcional;

Variable id, para el valor de la identificación

numérica, de carácter opcional;

Variable Alias, para el valor de la identificación o

(3)

Se observa que para definir la existencia de una variable de tipo Punto, se hace necesario que tenga los valores de tipo numérico real en la Variable X y en la

Variable Y (se entiende, por lo tanto, que se trabaja en un

espacio de coordenadas de dos dimensiones). De acuerdo a las exigencias de los algoritmos que se desee implementar, se puede agregar más variables dentro de la variable de

tipo Punto como el caso de la Variable Z de tipo numérico

real para guardar el valor de la Altitud (si se trabaja en un espacio en tres dimensiones), la Variable M (ESRI, 1998), variables requeridas para su identificación y algunas otras que sean necesarias.

La variable de tipo Punto puede quedar expresada en algoritmo:

NombreVariable = Punto(X, Y, Z, M, id, Alias) Donde NombreVariable es alguna variable donde se

guarda la información contenida en Punto.

3.2 Geometrías compuestas por más de un Punto. Partes de una geometría

Se define como Polilínea y Polígono a la sucesión continúa

o no de Vértices (que en este caso serían variables de

tipo Punto). Esta continuidad depende de la complejidad

que puede ser una objeto o un fenómeno en el espacio

geográfico como islas y lagos, una jurisdicción territorial partida en dos o más partes, entre otros casos. En la Figura 1 se puede observar esta complejidad mencionada donde

se agrupan estas discontinuidades de Vértices formando

Partes que conforman Polilíneas y Polígonos para un

mejor procesamiento y análisis. En la misma Figura 1, se observa en “a)” y “b)” representan una Polilínea y un

Polígono de una sola parte (vértices continuos). En “c)” se observa dos Polilíneas, la superior conformada por dos

partes y la inferior de una sola parte. En “d)” se observa dos

Polígonos, los cuales el Polígono superior tiene tres partes

y el inferior solo una sola parte.

Figura 1. Representaciones de una Polilínea y un Polígono. Fuente. Elaboración propia.

(4)

3.3 Abstracción Parte de una Polilínea y Polígono La abstracción de una variable de tipo Parte de una Polilínea

y Polígono puede definirse con la siguiente estructura:

Variable Parte

Variable Vértices, contenedor donde estarán almacenadas las variables de tipo Punto, de carácter obligatorio;

Variable id, para el valor de la identificación

numérica, de carácter opcional;

Variable Alias, para el valor de la identificación o

nombre alterno, de carácter opcional;

Variable TipoBorde, para saber si el borde es exterior o interior, para el caso de polígonos de tipo Dona o Dount;

Función CuentaVértices(), devuelve la cantidad de

vértices en una variable Parte;

Función ÁreaParte(), devuelve el área de una variable

Parte;1

Función PerímetroParte(), devuelve el perímetro de

una variable Parte.2

Fin Variable Parte

Se observa que a la misma variable se le puede agregar funciones, esto hace que la variable geométrica pueda dar valores intrínsecos a lo que representa en el mundo real como área, perímetro, entre otros.

3.4 Abstracción de la geometría Polilínea y Polígono Conociendo que puede existir una polilínea o polígono de una o más partes, se define las abstracciones de tipo

Polilínea y Polígono de la forma siguiente:

Variable Polilínea

Variable Partes, contenedor donde estarán almacenadas las variables de tipo Parte, de carácter obligatorio;

Variable id, para el valor de la identificación

numérica, de carácter opcional;

Variable Alias, para el valor de la identificación o

nombre alterno, de carácter opcional;

Función CuentaPartes(), devuelve la cantidad de

Partes en una variable Polilínea

Función Longitud(), devuelve la suma de las

longitudes de las partes que conforman la Polilínea. Fin Variable Polilínea

1 Valido para Parte de Polígono.

Variable Polígono

Variable Partes, contenedor donde estarán almacenadas las variables de tipo Parte, de carácter obligatorio;

Variable id, para el valor de la identificación

numérica, de carácter opcional;

Variable Alias, para el valor de la identificación o

nombre alterno, de carácter opcional;

Función CuentaPartes(), devuelve la cantidad de

Partes en una variable Polígono.

Función Perímetro(), devuelve la suma de los

perímetros de las partes que conforman el Polígono.

Función Área(), devuelve la suma de las áreas de las

Partes que conforman el Polígono. Fin Variable Polígono

Como en el caso de la variable Parte, se incluye las

funciones CuentaPartes(), Longitud(), Perímetro() y

Área(), que devuelve los valores indicados en cada uno. En

el caso de la Longitud(), supone un sencillo cálculo de la

distancia euclidiana entre dos puntos (como el teorema de

Pitágoras), como también puede ser la distancia geodésica por la Ley de Cosenos u otro tipo de cálculo que puede ser un poco más complejo y exhaustivo haciendo que el algoritmo sea más largo y el rendimiento del cálculo baje (Antúnez, R. & Hernández, L., 2014). También deja abierta

la idea de construir otros algoritmos para otros tipos de

geometría específicos como Línea, Rectángulo, Triangulo

y determinar su área y longitud (Davis, C., S.F.)y aplicando la Geometría Analítica para desarrollas más algoritmos de análisis de geometrías en dos dimensiones.

3.5 Geometrías y Partes de geometría vacía Es bueno notar que como existen variables definidas (las que tienen algún valor en su interior), existen variables sin ningún valor en su interior y lo mismo se aplica a estas abstracciones que hacen referencia este artículo y las que

llamaremos Geometría Vacía y Parte Vacía.

Una Geometría Vacía o Parte Vacía tiene la misma

la misma estructura o definición de las tres geometrías

comentadas anteriormente, la diferencia radica en que no

tienen ningún valor almacenado3.

Para el caso de una variable de tipo Punto Vacío:

NombreVariable=Punto(nulo,nulo,nulo,nulo,nulo,nulo)

Donde NombreVariable es una variable de tipo Punto

pero sin ninguna información, pero en el transcurso del

(5)

que aparece como nulo. Para el caso de una variable de

tipo Parte, Polilínea y Polígono, se les consideran vacíos siempre y cuando en la función CuentaVértices (en el caso

de una variable de tipo Parte) y en la función CuentaPartes

(para variables de tipo Polilínea y Polígono) devuelvan un valor igual a cero (0), y un valor nulo o vacío en las variables id y Alias (en las variables subordinadas que conforman estas abstracciones de estas geometrías).

IV. EJEMPLOS Y RESULTADOS

Se presentan algunos sencillos ejemplos para un mejor entendimiento del uso de las abstracciones presentadas:

Ejemplo 1: Crear una variable de tipo Polilínea, con dos partes (dos variables de tipo Parte:

‘Definir variables de tipo Parte y Polilínea Parte1 y Parte2, variables de tipo Parte {

Variable id Variable Vértices

Función CuentaVértices() Función LongitudParte()

}

Polilínea_Ejemplo, variable de tipo Polilínea {

Variable Partes Variable id

Función CuentaPartes() Función Longitud ()

}

’usar una variable de tipo Punto para llenar los vértices de Parte1guardandolo en la variable Vértices

Vértice <- Punto(2,5,nulo,nulo,1)

Parte1 .Vértices (1) = Vértice ‘Vértice 1de Parte1 Vértice <- Punto(5,5,nulo,nulo,2)

Parte1 .Vértices (2) <- Vértice ‘Vértice 2 de Parte1 Vértice <- Punto(5,7,nulo,nulo,3)

Parte1 .Vértices (3) <- Vértice ‘Vértice 3 de Parte1 Parte1.id <- 1 ‘asigno a la variable id el valor 1

Polilínea_Ejemplo .Partes(1) <- Parte1 ‘guarda Parte1 a la variable Partes de Polilínea_Ejemplo

‘se repite lo anterior para Parte2 Vértice <- Punto(0,1,nulo,nulo,1) Parte2 .Vértices (1) <- Vértice Vértice <- Punto(1,2,nulo,nulo,2) Parte2 .Vértices (2) <- Vértice Vértice <- Punto(2,3,nulo,nulo,3) Parte2 .Vértices (3) <- Vértice Parte2.id <- 2

Polilínea_Ejemplo .Partes(2) <- Parte2

Si se quiere observar los valores X,Y de las coordenadas

de esta variable de tipo Polilínea:

NúmeroPartes <- Polilínea_Ejemplo.CuentaPartes() desde i <- 1 hasta NúmeroPartes

NúmeroVértices <- Polilínea_Ejemplo.Partes(i). CuentaVértices()

desde j <- 1 hasta NúmeroVértices

Vértice <- Polilínea_Ejemplo.Partes(i). Vértices(j)

Imprime Vértice.X, Vértice.Y avanza j <- j + 1

avanza i <- i + 1

Se observa que es mucho más corto la impresión de los valores X,Y que la asignación de los mismos usando un bucle de control (conocido en la programación como un bucle FOR…. NEXT).

En la Figura 2 se observa que son dos variables de tipo

Parte con tres y dos vértices respectivamente (cada vértice es una variable de tipo Punto). Solo se declara un solo vértice y se puede reutilizar para tantas veces se necesite.

Figura 2. Grafico del Ejemplo 01

Fuente. Elaboración propia.

Ejemplo2: Calcular (de una manera muy simplificada) el área de un Polígono4 del tipo Dona

(Donut en ingles):

‘definición de las variables Parte1, Parte2 y Polígono_

Ejemplo

Parte1 y Parte2, variables de tipo Parte {

Variable id Variable Vértice Variable TipoBorde Función CuentaVértices() Función ÁreaParte() Función PerímetroParte() }

4 La solución general para el cálculo del área de un Polígono es usando determinantes de sus coordenadas.

(6)

Polígono_Ejemplo, de tipo Polígono {

Variable Parte

Función CuentaPartes() Función Área(){

Área_Temporal = 0

desde i = 1 hasta CuentaPartes() Si Partes(i).TipoBorde = “Exterior” Área_Temporal = Área_ Temporal + Partes(i).Área() Si Partes(i).TipoBorde = “Interior” Área_Temporal = Área_ Temporal - Partes(i).Área() avanza i = i + 1 Retorna Área_Temporal } } ‘llenado de Parte1 Vértice = Punto(1,9,nulo,nulo,1) Parte1.Vértices (1) = Vértice Vértice = Punto(8,9,nulo,nulo,2) Parte1.Vértices (2) = Vértice Vértice = Punto(8,2,nulo,nulo,3) Parte1.Vértices (3) = Vértice Vértice = Punto(1,2,nulo,nulo,3) Parte1.Vértices (4) = Vértice Parte1.id = 1 Parte1.TipoBorde = “Exterior” Polígono_Ejemplo.Partes(1) = Parte1 ‘llenado de Parte2 Vértice <- Punto(2,7,nulo,nulo,1) Parte2. Vértices (1) <- Vértice Vértice <- Punto(7,7,nulo,nulo,2) Parte2.Vértices (2) <- Vértice Vértice <- Punto(7,5,nulo,nulo,3) Parte2.Vértices (3) <- Vértice Vértice <- Punto(2,5,nulo,nulo,3) Parte2.Vértices (4) <- Vértice Parte2.id <- 2 Parte2.TipoBorde <- “Interior” Polígono_Ejemplo.Partes(2) <- Parte2

Imprime Polígono_Ejemplo.Área() ‘se ejecuta la función Área de Polígono_Ejemplo y se muestra el resultado

Del algoritmo presentado se observa que invocando

la función Polígono_Ejemplo.Área() se puede obtener el

aritmética de las Partes que conforman este Polígono. En la Figura 3 se observa que la variable Parte1 es el borde

exterior del Polígono de tipo Dona (o Donut en ingles) y la variable Parte2 es el borde Interior, que para calcular el

área, se hace la resta de ambas áreas de estas Partes.

Figura 3. Grafico del Ejemplo 02

Fuente. Elaboración propia.

V. CONCLUSIONES

• El uso de abstracciones de entidades geométricas

para representar entidades geográficas usando el

modelado de datos orientado a objetos son de

ayuda para un mejor entendimiento de algunas propiedades inherentes como la ubicación, extensión de los mismos y su interrelación con

otros similares de una manera sistémica desde el

mismo objeto y su relación con su entorno.

• La creación, diseño de estas abstracciones como

su interrelación es de una manera sencilla, dando

posibilidad de crear otras tantas como una variable

de tipo Rectángulo (formado por dos variables de

tipo Punto en las dos esquinas de una diagonal),

otro de tipo Circulo (formado por una variable de

tipo Punto y una variable para el radio), y otros más de acuerdo a la necesidad del especialista.

• La utilización de Funciones dentro de las mismas

variables Parte, Polilínea y Polígono son el

resultado de la interrelación lógico-matemática de las variables subordinadas obteniéndose valores de Perímetro, Longitud, Área, pudiéndose implementarse más funciones para hallar el Centroide de una geometría (que sería una variable de tipo Punto) o el rectángulo envolvente de una geometría (rectángulo formando por los vértices más externos de una geometría). La

implementación de estas funciones debe estar

(7)

puntos proyectados en un mapa UTM (Universal Transversal Mercator) o el cálculo de la distancia entre dos puntos geodésicos (longitud y latitud) utilizando la Ley de Cosenos, que aparte de

la implementación se debe tener en cuenta el

rendimiento del algoritmo al realizar cada cálculo.

VI. REFERENCIAS BIBLIOGRAFICAS

Albuquerque, K. (2002). Modelagen de dados geográficos, Curso

de especializaçao em geoprocessamento. Recuperado

de http://csr.ufmg.br/geoprocessamento/publicacoes/ Modelagem%20de%20dados%20geografico.PDF

Antúnez, R. & Hernández, L. (2014). Propuesta de paradigma para análisis geométricos en SIG independiente del sistema de referencia. Revista Geográfica Venezolana,

55(1), 11-26. Recuperado de http://www.redalyc.org/ pdf/3477/347732465002.pdf

Chen, Y., Wang, Z. & Chen, Z. (2012).Implementation of Object-oriented GIS data model with topological relations between spatial objects. International Journal of Advanced Computer Science, 2 (9), 334-338. Recuperado de http:// citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1. 428.8653&rep=rep1&type=pdf

Davis, C. (S.F.). Algoritmos Geométricos em SIG. Recuperado de http://andersonmedeiros.com/algoritmos-geometria-computacioal-sig/

ESRI (1998). ESRI Shapefile Technical Description. Recuperado de https://www.esri.com/library/whitepapers/pdfs/shapefile. pdf

García, J. (1994). Los sistemas de información geográfica orientados a objetos. Perfiles actuales de la geografía

cuantitativa en España, 323-332. Recuperado de http:// www.age-geografia.es/tig/1994_malaga/1994_028.pdf Huang, M., Zhu, L., Liu, P., Wang, J. & Guo, L. (2015). A novel

algorithm for agrregating the topological nodes in web GIS network management. International Journal of Database

Theory and Application, 8(1), 137-148. Recuperado de http://www.sersc.org/journals/IJDTA/vol8_no1/15.pdf Joyanes, L. (1996). Programación orientada a objetos. Madrid,

España: McGRAW-HILL

Kumar, M., Bhatt, G. & Duffy, C. (2010). An object-oriented shared data model for GIS and distributed hydrologic models.

International Journal of Geographical Information Science,

24 (7), 1061-1079. Recuperado de http://people.duke. edu/~mk176/publications/KumarEtAl_ObjectOriented_ IJGIS.pdf

Liria, J. (2008). Sistemas de información geográfica y análisis espaciales: un método combinado para realizar estudios panbiogeográficos. Revista Mexicana de Biodiversidad,

79, 281-284. Recuperado de http://www.scielo.org.mx/pdf/ rmbiodiv/v79n1/v79n1a24.pdf

Martínez-Rosales, M. & Levachkine, S. (2014). Modelo conceptual de entornos geográficos dinámicos. Ingeniería

Investigación y Tecnología, 15(2) ,163-174. Recuperado de http://www.scielo.org.mx/pdf/iit/v15n2/v15n2a1.pdf Posada, N. & Sol, D. (S.F.). Modelado de datos orientado

a objetos para un sistema de información geográfica. Recuperado de ict.udlap.mx/activities/GIS/html/files/ ModeladoDeDatos.doc

Rodríguez, R. & Lazo, M. (2013). Modelo para la representación de redes y búsqueda de caminos óptimos en Sistemas de Información Geográfica. Ingenieare. Revista chilena de ingeniería, 21(3), 394-407. Recuperado de http://www. scielo.cl/pdf/ingeniare/v21n3/art09.pdf

Sánchez, J. (2010). Unidad 6: Programación Orientada a Objetos. Fundamentos de Programación 1º de ASI. Recuperado de http://www.jorgesanchez.net/programacion/apuntes2009/ fpr0609.pdf

Tolaba, A., Caliusco, M. & Galli, M. (2013). Meta-ontología Geoespacial: Ontología para Representar la Semántica del Dominio Geoespacial. Trabajo presentado en el Congreso Nacional de Ingeniería Informática – Sistemas de Información (CoNaIISI) de la Universidad Tecnológica Nacional, Santa Fe, Argentina. Recuperado de http://conaiisi. frc.utn.edu.ar/PDFsParaPublicar/1/schedConfs/1/176-473-1-DR.pdf

Vela, A., Fernández, M. & Castaño, S. (1997). La información geográfica y los S.I.G. Ensayos: Revista de la Facultad de Educación de Albacete. 12, 361-371. Recuperado de http:// dialnet.unirioja.es/servlet/articulo?codigo=2291899

(8)

Figure

Actualización...

Referencias

Actualización...