Revised Frameworks: ISO
4.1.3 ISO 9001:2000 requirements
Release notes, http://www.adobe.com/svg/indepth/releasenotes.html (2000.06.25).
2. Aplicaciones WEB usando XML. Web Studios E-Solutions.
3. Backhoff, Miguel Ángel y otros. El Sistema de Información Geoestadística para el Transporte. Sanfandila, Qro. México, 2002.
4. Borland Delphi 7.0. Programmer Guide.
5. Creating Internet-Based GIS Applications,
http://www.ce.utexas.edu/stu/favazzds/GISPaper.html, 1998.
6. ESRI. España, Geosistemas S.A. Estándares de Datos Geográficos e Interoperabilidad. Documento Técnico. 2004. http://www.esri.com/standars. 7. Fernández P. y otros. Acceso estándar a Información Territorial por Internet,
nuevas oportunidades abiertas por la OpenGIS Internet Map Server Interface Specification. Universidad de Zaragoza. España. 2000.
8. Geographic Information Systems and Cartographic Modelling, Prentice-Hall, Englewood Cliffs, New Jersey.1990.
9. GSDI, The SDI CookBook, Version 1, 2000. 10. Inside Windows 2000, Third Edition.
11. Internet für Kartographen; in: Kartographische Nachrichten, 1996, Jg. 46, Heft 5, S. 185-190.
12. Internet-Kartographie: (R) Evolution oder Sackgasse, in: Kartographische Nachrichten, 1999, Jg. 49, Heft 3, S. 98-104.
13. Introduction to GML (Geography Markup Language)
http://www.opengis.org/GML.html. 14. http://web-services.bankhacker.com/. 15. http://www.ebstudio.com/src/client/scripts/informacion.php?cat_id=42. 16. http://www.nosolosig.com/quesig.htm. 17. http://www.cartesia.org 18. http://www.cndg.clearinghouse.gub.uy
19. Loranca Mateos, O. Cosultas Espaciales en una Arquitectura de Componentes GIS. Universidad de las Américas, Puebla, México. 2000. http://www.pue.udlap.mx.
20. Microsoft Developer Network, Julio-2002-2003.
21. Moses Martin, Robert. IOS TC 211, Standards in Action. Berlin, Alemania. 2003. http://www.pcigeomatics.com.
22. Open GIS Consortium Specifications, 1998 – 1999 – 2000. www.opengis.org. 23. Open GIS Consortium, Inc., The OpenGIS Abstract Specification, Versión 4,
1999
24. OpenGIS Consortium, Inc., OpenGIS Simple Features Specification For OLE/COM Revision 1.1, 1999
25. OpenGIS Consortium, Inc., OpenGIS Simple Features Specification For SQL Revision 1.1, 1999
26. Open GIS Consortium, Inc., OpenGIS Web Map Server Interface Implementation Specification Revision 1.0.0, 2000.
27. OpenGIS Consortium, Inc., OpenGIS Geography Markup Language (GML) Implementation V 3_0. 2003.
28. OpenGIS Consortium, Inc., OpenGIS Web Feature Service Implementation V 1_0_0. 2002.
29. OpenGIS Consortium, Inc., Filter Encoding Implementation Specification. V 1.0. 2001.
30. OpenGIS Consortium, Inc., Styled Layer Descriptor specification (V 1.0). 2002. 31. OpenGIS Consortium, Inc., Catalog Services Specification. V 1.0. 2002.
32. OpenGIS Consortium, Inc., WMS Cookbook. 2003. 33. Programación en Visual C++.
Anexo A
Arquitectura del servicio de mapas y de datos implementado para la gestión de la telefonía pública según las especificaciones de OpenGIS.
Cliente Cliente Cliente
MapServer DataProvider XML y GML XML y GML XML SQL GML
Anexo B
Las interfaces contenidas en esta sección son las implementadas para el manejo de las geometrías según las especificaciones de OpenGIS, empaquetadas en la biblioteca FeatureGeometries.dll y son:
ICurve, IEnvelope, IGeometry, IGeometryCollection, IGeometryFactory, ILinearRing, ILineString, IMultiCurve, IMultiLineString, IMultiPoint, IMultiPolygon, IMultiSurface IPoint, IPolygon, ISpatialOperator, ISpatialRelation, ISurface, IWks, IWkt.
ICurve
La interfaz ICurve define los métodos generales para acceder a las propiedades de una curva. Una curva se define por un conjunto de puntos y un método de interpolación.
Método Descripción
Length Retorna la longitud de la curva. IsClosed Prueba si la curva es cerrada. StartPoint Retorna el punto inicial de la curva. EndPoint Retorna el punto final de la curva.
Value Retorna el punto que se encuentra a una distancia dada en la curva.
IEnvelope
Interfaz que representa el menor rectángulo que contiene en su interior a la geometría.
Un Envelope es vacío cuando se crea, o como resultado de alguna operación Ej. la intersección de dos Envelope puede dar un Envelope vacío.
Método Descripción
GetCorners Retorna los puntos inferior izquierdo y superior derecho del Envelope.
PutCorners Asigna el valor los puntos inferior izquierdo y superior derecho del Envelope.
AsGeometry Retorna una geometría con la misma forma que el Envelope.
IGeometry
La interfaz IGeometry contiene la lógica que deben implementar todos los objetos geométricos. Esta interfaz define las propiedades y métodos básicos para todos los objetos geométricos.
Método Descripción
Clone Crea y retorna una nueva geometría idéntica a la geometría fuente.
Dimension Retorna la dimensión inherente de la geometría. Envelope Retorna el Envelope de la geometría.
IsA Retorna el tipo de objeto de la geometría. IsEmpty Determina si la geometría es vacía. IsSimple Determina si la geometría es simple.
Project Retorna una nueva geometría como resultado de la proyección aplicada.
SpatialReference Retorna el Sistema de Referencia Espacial.
IGeometryCollection
La interfaz IGeometryCollection define los métodos generales para acceder a los objetos en una colección de geometrías. El acceso a cada elemento se realiza a través de un índice. El orden de los elementos en la colección no tiene importancia geométrica.
Método Descripción
NumGeometries Retorna la cantidad de geometrías en la colección.
Geometry Devuelve una geometría.
AddGeometry Adiciona una geometría a la colección. DeleteGemetry Elimina una geometría de la colección.
IGeometryFactory
La interfaz IGeometryFactory define los métodos para crear una geometría dada su representación en formato Well-know Binary.
Método Descripción
CreateFromWKB Crea un objeto geométrico dada su representación en Well- know Binary.
ILineString
Define una curva con interpolación lineal.
Método Descripción
PutPoints Adiciona los puntos de una polilínea. Point Retorna un punto a partir del índice.
NumPoints Retorna el número de puntos de la polilínea. GetPoints Retorna los puntos de una polilínea.
PutPoint Modifica un punto de la polilínea.
IPoint
Interfaz que define los métodos para acceder a los objetos puntuales. Un objeto puntual esta representado por un par (x, y).
Método Descripción
GetCoords Retorna las coordenadas al punto. PutCoords Asigna las coordenadas al punto.
Get_X Retorna la coordenada X del punto.
Put_X Asigna la coordenada X del punto.
Get_Y Retorna la coordenada Y del punto.
Put_Y Asigna la coordenada Y del punto.
IPolygon
Interfaz que define los métodos generales para acceder a las propiedades de los Polígonos. Un polígono esta compuesto por un anillo exterior y una colección de anillos interiores, que definen su frontera. Estos anillos no se pueden cruzar ni ser tangentes.
Método Descripción
ExteriorRing Retorna el anillo exterior del polígono.
NumInteriorRing Retorna el número de anillos interiores del polígono. InteriorRing Retorna el anillo interior especificado.
PutExteriorRing Adiciona el anillo exterior. AddInteriorRing Adiciona un anillo interior.
DleteInteriorRing Elimina el anillo interior especificado.
ISpatialOperator
Operaciones espaciales entre geometrías. Conceptos:
La frontera de una geometría esta compuesta por el conjunto de geometrías de una dimensión inferior. La frontera de un punto o un multipunto es el conjunto vacío. La frontera de una curva no cerrada son sus puntos extremos, la frontera de una curva cerrada es vacía. La frontera de una multicurva esta compuesta por aquellos puntos que están en un número impar de curvas. La frontera de una superficie consiste en el
conjunto de anillos que la forman. La frontera de un multisuperficie consiste en el conjunto de anillos de sus superficies.
El interior de una geometría son todos aquellos puntos de la geometría que quedan cuando la frontera es eliminada.
El exterior de una geometría son todos aquellos puntos que no están ni en la frontera ni en el interior.
Método Descripción
Distance Retorna la distancia entre las geometrías. Boundary Retorna la frontera de la geometría.
Intersection Calcula la intersección de dos geometrías.
Union Calcula la unión de dos geometrías.
Difference Calcula la diferencia de dos geometrías.
SymmetricDifference Calcula la diferencia simétrica de dos geometrías Buffer Retorna a polígono que incluye todos los puntos a una
distancia de la frontera de la geometría fuente. ConvexHull Retorna el convex hull de la geometría fuente
ISpatialRelation
Interfaz que define las relaciones espaciales entre geometrías.
Método Descripción
Equals Determina si dos geometrías son iguales. Touches Determina si dos geometrías se tocan. Contains Determina si una geometría contiene a otra. Within Determina si una geometría esta dentro de otra. Disjoin Determina si las geometrías son disjuntas. Crosses Determina si dos geometrías se cruzan. Overlaps Determina si dos geometrías se solapan. Intersects Determina si dos geometrías se interceptan.
IWks
La interfaz IWks define métodos para tratar con el formato Well-know Binary definido por OpenGIS Consortium. Este formato se utiliza para representar la estructura de los objetos geométricos de una forma estándar y portable.
Método Descripción
WKBSize Retorna el tamaño del formato Well-known Binary
ImportFromWKB Crea una geometría a partir de su representación en el formato Well-known Binary
ExportToWKB Retorna la representación en formato Well-know Binary del objeto.
IWkt
La interfaz IWks define métodos para tratar con el formato Well-know Binary definido por OpenGIS Consortium. Este formato se utiliza para representar la estructura de los objetos geométricos de una forma estándar y portable.
Método Descripción
ImportFromWKT Crea una geometría a partir de su representación en el formato Well-known Text
ExportToWKT Retorna la representación en formato Well-know Text del objeto.
Ejemplo para crear una geometría de un WKB
Esta función devuelve una geometría creada a partir de un WKB almacenado en un campo binario (FieldName) de una tabla (Table).
Ejemplo de uso de un Operador Espacial
Esta función devuelve la geometría resultante de unir 2 geometrías.
function CreateGeometry(Table: ADOTable; FieldName: String): IUnknown; var pBlobStream: TADOBlobStream; Size: Integer; vGeometryBuffer: OleVariant; WLBArray: PByteArray; GeoFactory: IGeometryFactory; begin
// Leer el WKB del campo hacia un arreglo de bytes pBlobStream:= TADOBlobStream.Create(TBlobField(
Table.FieldByName(FieldName)), bmRead); pBlobStream.Position:= 0;
Size := pBlobStream.Size; try
vGeometryBuffer := VarArrayCreate([0,size], varByte); WKBArray := VarArrayLock(vGeometryBuffer);
pBlobStream.Read (WKBArray^, Size); VarArrayUnlock(vGeometryBuffer); finally
pBlobStream.free; end;
// Crear la Clase GeometryFactory y con esta la geometría GeoFactory := CoGeometryFactory.Create;
Result := GeoFactory.CreateFromWKB(vGeometryBuffer) as IUnknown;
end;
function Union (Geometry1, Geometry2: IUnknown): IUnknown; begin
// Obtener la Interfaz ISpatialOperator para realizar la Union Result:= (Geometry1 as ISpatialOperator).Union(Geometry2); if (Result as IGeometry).IsEmpty then
ShowMessage('El resultado de la unión es vacío');
Anexo C
Las interfaces contenidas en esta sección son las implementadas para el manejo de los sistemas de referencia espacial según las especificaciones de OpenGIS, empaquetadas en la biblioteca VagoSRS.dll y son:
ISRAuthorityFactory, ISRSystemFactory, IGeodeticSRSystem, IGeographicCS, IGeographicTransform, IHorizontalDatum, IUnit, ILinearUnit, IParameter, IParameters, IPrimeMeridian, IProjectedCS, IProjection, ISRInfo, ISRSystem, IAngularUnit, IEllipsoid.
ISRAuthorityFactory
Interfaz que define los métodos para crear distintas entidades utilizadas en los Sistemas de Referencia Espacial (SRE). Las distintas entidades se crean a partir de códigos definidos.
Método Descripción
get_Authority Retorna el nombre de la autoridad que implementa
esta interfaz.
CreateProjectedCS Retorna un Sistema de Coordenadas Proyectada. CreateGeographicCS Retorna un Sistema de Coordenadas Geográfico. CreateProjection Retorna una proyección.
CreateGeographicTransform Retorna un objeto que hace transformaciones geográficas.
CreateHorizontalDatum Retorna un horizontal datum. CreateEllipsoid Retorna un elipsoide.
CreatePrimeMeridian Retorna un meridiano primo. CreateLinearUnit Retorna una unidad lineal. CreateAngularUnit Retorna una unidad angular.
EnumItem Retorna un arreglo con los tipos de objetos
ISRSystemFactory
La interfaz ISRSystemFactory permite crear Sistemas de Referencia Espacial dado su descripción en Well-Known Text.
Método Descripción
CreateFromWKT Crea un Sistema de Referencia Espacial SRE. ISRSystem
Interfaz que define un Sistema de Referencia Espacial (SRE). Un Sistema de Referencia Espacial puede ser geodésico o local.
IProjectedCS
La interfaz IProjectedCS representa un Sistema de Coordenadas Proyectado (SCP). Un SCP o es un sistema de coordenadas plano, generalmente rectangular, que es la representación en un plano (x, y) de toda o una porción de la superficie de la tierra. Un SCP se basa en un Sistema de Coordenadas Geográfico y una Proyección que transforma la superficie de la tierra a un plano.
Método Descripción
get_GeographicCS Retorna el Sistema de Coordenadas Geográfico del SCP. putref_GeographicCS Asigna el Sistema de Coordenadas Geográfico al SCP. get_LinearUnit Retorna la unidad lineal del SCP.
putref_LinearUnit Asigna la unidad lineal del SCP. get_Projection Retorna la proyección del SCP. putref_Projection Asigna la proyección del SCP. get_Parameters Retorna la colección de parámetros.
Forward Transforma las coordenadas geográficas de un arreglo de punto a sus Inverse Transforma las coordenadas planas de un arreglo de punto a sus
IGeographicCS
Interfaz que define un Sistema de Coordenadas Geográfico. Un Sistema de Coordenadas Geográfico (SCG) es un sistema donde las coordenadas se miden en unidades angulares, longitud y latitud.
Un SCG esta formado por un datum que representa la abstracción de la superficie terrestre. Un meridiano primo que se utiliza para medir las latitudes relativas al meridiano de Greenwich. Y por último una unidad angular en la que se miden las coordenadas.
Método Descripción
get_HorizontalDatum Retorna el datum del Sistema de Coordenadas Geográfico. putref_HorizontalDatum Asigna el datum al Sistema de Coordenadas Geográfico. get_AngularUnit Retorna la unidad angular del Sistema de Coordenadas Geográfico. putref_AngularUnit Asigna la unidad angular al Sistema de Coordenadas Geográfico. get_PrimeMeridian Retorna el meridiano primo del Sistema de Coordenadas Geográfico. putref_PrimeMeridian Asigna el meridiano primo al Sistema de Coordenadas Geográfico.
IGeographicTransform
Interfaz que define los métodos para transformar coordenadas de un Sistema de Coordenadas Geográfico (SCG) a otro. Transforma coordenadas desde el SCG origen al SCG destino y viceversa.
Método Descripción
get_SourceGCS Retorna el Sistema de Coordenadas Geográfico (SCG) origen. putref_SourceGCS Asigna el Sistema de Coordenadas Geográfico (SCG) origen. get_TargetGCS Retorna el Sistema de Coordenadas Geográfico (SCG) destino. putref_TargetGCS Asigna el Sistema de Coordenadas Geográfico (SCG) destino. Parameters Retorna la colección de parámetros.
Forward Transforma las coordenadas geográficas desde el SCG
origen de un arreglo
Inverse Transforma las coordenadas geográficas desde el SCG
IUnit
Interfaz que define una unidad utilizada en los SRS. Esta interfaz no define métodos, se utiliza para lograr el polimorfismo entre las distintas unidades.
Nota: Pudiera utilizar para este propósito la interfaz IUnknow pero se prefirió una interfaz propia.
IHorizontalDatum
Un HorizontalDatum representa la abstracción de la superficie terrestre para una determinada región. Este incluye el elipsoide y el desplazamiento del centro de este con respeto al elipsoide WGS 84.
Método Descripción
get_Ellipsoid Retorna el elipsoide que contiene este HorizontalDatum. putref_Ellipsoid Asigna el elipsoide al HorizontalDatum.
GetDeltaCenter Retorna el delta del centro del elipsoide en el HorizontalDatum. PutDeltaCenter Asigna el delta del centro del elipsoide en el HorizontalDatum.
get_X Retorna el valor del delta por la X del centro del elipsoide. put_X Asigna el valor del delta por la X del centro del elipsoide. get_Y Retorna el valor del delta por la Y del centro del elipsoide. put_Y Asigna el valor del delta por la Y del centro del elipsoide. get_Z Retorna el valor del delta por la Z del centro del elipsoide. put_Z Asigna el valor del delta por la Z del centro del elipsoide. ILinearUnit
Interfaz que representa una unidad lineal. Esta unidad lineal se define en metros. La cantidad de metros por unidad lineal tiene que ser mayor que cero.
Método Descripción
get_MetersPerUnit Retorna el número de metros por unidad lineal. put_MetersPerUnit Asigna el número de metros por unidad lineal.
IParameter
Interfaz que deben implementar los parámetros utilizados en los Sistemas de Referencia Espacial (SRE).
Los parámetros son utilizados en la Proyecciones y los Sistemas de Coordenadas Proyectados.
Nota: Un parámetro, además, tiene que implementar la interfaz ISRInfo.
Método Descripción
get_Unit Retorna la unidad en la que se mide el valor del parámetro. putref_Unit Asigna la unidad en la que se mide el valor del parámetro.
get_Value Retorna el valor del parámetro.
put_Value Asigna el valor al parámetro.
IParameters
Interfaz que define una colección de parámetros. Define los métodos estándares para acceder a los parámetros en la colección.
Método Descripción
get_Count Retorna la cantidad de parámetros en la colección.
get_NewEnum Retorna un enumerador estándar.
Add Añade un nuevo parámetro a la colección.
Item Retorna un parámetro de la colección.
Remove Elimina un parámetro de la colección.
IPrimeMeridian
La interfaz IPrimeMeridian representa un meridiano primo en un Sistema de Referencia Espacial (SRE). Un meridiano primo es el meridiano a partir del cual se miden los valores de las latitudes en el SRE.
Un meridiano primo se mide relativo al Meridiano de Greenwich.
Método Descripción
get_Longitude Retorna la longitud del meridiano primo relativa a Greenwich. put_Longitude Asigna la longitud del meridiano primo relativa a Greenwich.
get_AngularUnit Retorna la unidad angular utilizada en el meridiano primo. putref_AngularUnit Asigna la unidad angular utilizada en el meridiano primo.
IProjection
Interfaz que encapsula la matemática de las proyecciones geográficas. Una proyección transforma coordenadas planas a coordenadas esféricas y viceversa. Las distintas proyecciones definen el conjunto de parámetros que utilizan.
Método Descripción
get_AngularUnit Retorna la unidad angular de la proyección. putref_AngularUnit Asigna la unidad angular a la proyección. get_LinearUnit Retorna la unidad lineal de la proyección. putref_LinearUnit Asigna la unidad lineal a la proyección. get_Ellipsoid Retorna el elipsoide de la proyección. putref_Ellipsoid Asigna el elipsoide a la proyección. get_Parameters Retorna la colección de parámetros.
Forward Transforma las coordenadas esféricas de un arreglo de punto a sus Inverse Transforma las coordenadas planas de un arreglo de punto a sus
ISRInfo
Interfaz que define la información estándar en las entidades de los SRE. Los Sistema de Referencia Espacial (SRE) son los sistemas de coordenadas, tanto planas, como geográficas en los que tiene sentido los valores de un par (x, y).
Estos sistemas utilizan distintas entidades, como las unidades angulares, unidades lineales, horizontal datum, etc. Todas estas tienen un conjunto estándar de datos, que son los que representa la interfaz ISRInfo.
Según la especificación OpenGIS, la mayoría de los valores de estas entidades los dan la European Petroleum Survey Group (EPSG) y Petrotechnical Open Software Consortium (POSC).
Método Descripción
get_Name Retorna el nombre de la entidad.
put_Name Asigna el nombre a la entidad.
get_Authority Retorna el nombre de la autoridad, persona, etc. put_Authority Asigna el nombre de la autoridad que crea la entidad.
get_Code Retorna el código de la entidad.
get_Abbreviation Retorna la abreviación de la entidad. put_Abbreviation Asigna la abreviación a la entidad.
get_WellKnownText Retorna una representación textual de la entidad. IAngularUnit
Interfaz que representa una unidad angular. Esta unidad angular se define en radianes.
La cantidad de radianes por unidad angular tiene que ser mayor que cero.
Método Descripción
get_RadiansPerUnit Retorna el número de radianes por unidad angular. put_RadiansPerUnit Asigna el número de radianes por unidad angular. IEllipsoid
Interfaz que define los métodos para acceder a los datos de un elipsoide. El elipsoide de revolución se utiliza como una abstracción de la superficie de la tierra. Los valores de los semiejes del elipsoide tienen que ser mayor que cero.
Al definir los valores de un elipsoide, especificar los dos semiejes, o el semieje mayor y el inverso del achatamiento. En el último caso asignar primero el valor al semieje mayor y después el valor del inverso del achatamiento.
Método Descripción
get_SemiMajorAxis Retorna el valor del semieje mayor del elipsoide. put_SemiMajorAxis Asigna el valor del semieje mayor del elipsoide. get_SemiMinorAxis Retorna el valor del semieje menor del elipsoide. put_SemiMinorAxis Asigna el valor del semieje menor del elipsoide.
get_AxisUnit Retorna la unidad lineal en la que se miden los valores en