Tuesday, September 12, 2006

Conector universal de Google Earth a ArcIMS / Universal connector from Google Earth to ArcIMS

Tengo algo que ofreceros gratuitamente: el conector universal de Google Earth a ArcIMS. Es un script al que llamas desde Google Earth con unos determinados parámetros, como el servidor ArcIMS, el servicio de mapa, y las capas que debe mostrar (además de la extensión geográfica, pero de eso se encarga Google Earth), y él se conecta a ArcIMS, pide el mapa, y se lo sirve a Google Earth. ¿Ciencia a ficción? No, pura realidad, y en muy poco código.

Me he basado en los ejemplos que he encontrado por Internet, donde a un script como éste se le llama reflector.

Más en detalle:

Lo primero que debemos investigar es el objeto NetworkLink de la especificación KML. Este objeto permite llamar a un objeto situado en Internet (en mi caso, una página ASP), a la que le pasará un parámetro BBOX, con las coordenadas WGS84 que definen la extensión de mapa que muestra en pantalla.

Así que la estrategia para hacer un script reflector es hacer un script que recoja las coordenadas, y haga una petición a un servidor de mapas concreto. Los ejemplos de Internet se han quedado ahí. Yo me preguntaba, ¿y si en la propia llamada al script del objeto NetworkLink incluyo el servidor y el servicio de mapas como parámetros? Y así lo hice.

A partir de este momento, tengo un conector universal. Puede ser invocado para traducir peticiones de Google Earth a cualquier servidor ArcIMS del mundo.

En el diagrama anterior se muestra la arquitectura de este conector universal; lo que ofrezco es el script reflector, que está ubicado en http://www12.asphost4free.com/ogomez2/GE/arcims_reflector.asp

Este script no funciona así directamente, debe ser invocado desde un objeto NetworkLink dentro de Google Earth.

Para probar cómo funciona, he creado una aplicación que, dada la ruta a un servidor ArcIMS, consulta los servicios de mapa disponibles, y te permite seleccionar las capas que quieres mostrar. Finalmente genera un fichero que deberéis salvar como .KML para poder abrirlo con Google Earth posteriormente. Esta aplicación está disponible en:

http://www12.asphost4free.com/ogomez2/GE/arcims2ge.asp

Este servidor me proporciona alojamiento gratuito junto con soporte a páginas ASP, pero no es muy estable. Si falla, paciencia, volverá a funcionar en un rato.

I have something to offer for free: the Universal connector from Google Earth to ArcIMS. It's a script that can invoked from Google Earth specifying certain parameters, such as the ArcIMS server, the map service, and the layers to show (in addition to the extent of the map, but that's the job of Google Earth); the script connect to the specified ArcIMS server, asks for the map, and makes it available to Google Earth. Science fiction? No, just the reality, and with a few coding in fact.

I based on the examples that can be found over the Internet, where a script like this is called a reflector script. More in detail:

The first thing we should investigate is the NetworkLink object in the KML specification. This object allows remote calls to an object placed over the Internet (in my case, an ASP page); Google Earth will invoke this object specifying the BBOX parameter, what means the extent of the map in WGS84 coordinates.

The main strategy for building a reflector script is collecting these coordinates, and building a map request for the specific map server using those coordinates. The examples over the Internet stopped there, but I wondered, what if I include in the call to the script the map server and the map service as parameters as well? And I made that.

Since that moment, I built an universal connector for adding ArcIMS map services into Google Earth. It can be invoked for translating Google Earth requests to any online ArcIMS server in the world.

The above diagram shows the architecture of this universal connector; what I am offering as the universal connector is the reflector script, located in http://www12.asphost4free.com/ogomez2/GE/arcims_reflector.asp

This script does not work directly, it must be invoked from a NetworkLink object inside Google Earth.

For trying it, I have created an application that allows querying an ArcIMS server, and build a KML file from the selected layers in one service. It will create a file that you should download and rename as .KML, for Google Earth to open it. This application is available under:
http://www12.asphost4free.com/ogomez2/GE/arcims2ge.asp

This server provides me with free hosting and ASP pages support, but it's not very stable. If it fails, please be patient, it will work again in a few minutes time.

6 comments:

Oscar Gomez said...

Incluyo una serie de preguntas que me hizo Pedro López por e-mail, y mis respuestas, por si os son de utilidad.


No voy a traducir los comentarios al inglés (ni viceversa) como norma general del blog

PL:Cuando intento añadir a mi catálogo el del Atlas Climático de la Península Ibérica lo hago y no se ve nada (¿podría ser porque tiene formato de miramon?) y lo mismo me pasa con el que suministra IDEE con las CLC ambos en el directorio de servicios de la IDEE
OG: Le echaré un vistazo a lo de Miramón. En cualquier caso, debes añadirlo como servidor WMS. En cuanto al CLC del IDEE, ya lo
había probado. A mí me hace cosas extrañas. Al principio no se ve nada
aunque hagas zoom in. Yo lo que hago es añadir el mapa base del IDEE,
y hago mucho zoom. Entonces cargo el del CLC, y se carga bien. El
problema es cuando te alejas, que desaparece.
Sin embargo, si usas el servicio de mapa de Land_Cover_2000 de la EEA
(es uno de los dos ejemplos), tienes datos de Corine en formato raster
que puedes ver de más lejos, y vectoriales cuando estás más cerca. Lo
malo es que a nivel europeo solo hay clasificación hasta nivel 3.

PL: ¿En qué se diferencia un ArcGis Server de un ArcIMS Server y de un WMS Server a efectos prácticos y de conexión?
OG: En cuanto a ArcGIS Server, no he trabajado mucho con él, pero a
efectos de conexión debe ser parecido, ya que en la versión 9.2 dicen
que se fusionan ArcIMS y ArcGIS server en un solo producto.

ArcIMS simplemente te dará más funcionalidad con ArcGIS Desktop:
consultas, selección por proximidad, ver la tabla de atributos,
cambiar la proyección, ..., mientras que WMS tiene una funcionalidad
muy limitada: mostrar mapas, identificar, y poco más.


PL: ¿Dónde hay más servidores ArcIMS disponibles?
OG: En cuanto a más servidores disponibles: iré rellenando la lista, de
hecho es algo que debía haber hecho (incluso podría estar grabando los
servidores que introduce la gente), pero bueno, poquito a poco. Por cierto, que he añadido ya alguno más: País Vasco, Castilla y León, Región de Murcia y suelos del JRC.

PL: Por otra parte me parece muy útil la aplicación que has desarrollado ya que a nivel interno utilizo mucho el Google Earth para presentaciones, etc. y me cuesta bastante el cambio de coordenadas para que mi capa se "acople" bien al mapa. Así se hace directamente.
OG: Un último punto es el tema de las coordenadas. He hecho el script "a
lo bestia", y sé que en algunos casos los mapas no ajustarán bien (100
ó 200 metros en el peor de los casos). Es el caso de IDEAndalucía, que
debería aplicar una transformación de 7 parámetros para el datum (de
ED1950 a WGS84), y no lo estoy haciendo.

Oscar Gomez said...

Un ejemplo: Google Earth carece de imágenes de alta resolución en Valladolid; con este ejemplo, es posible cargar la ortofoto 1:10.000 de la Junta de Castilla y León en Google Earth

Unknown said...

Hello - I am wondering if you provide the ASP code for loading onto our servers here at the County of Los Angeles so we don't have to burden your ASP servers?

Please contact me at mgreninger@cio.lacounty.gov

Thanks!

Unknown said...

Hola Oscar!

Felicitaciones por los conectores universales.. desde hace algunos días he estado tratando de conectarme a los ejemplos en ASP que hasy desarrollado para mostrárselo a colegas y alumnos, pero veo que no ha vuelto a funcionar. Los tienes en otro servidor??

saludos

Daniel

Anonymous said...

Arcgis server incluye Arcims, Arcsde y Mapobjects. Diferencia? bueno, el precio, vale $35,000 por procesdador.

un saludo

Anonymous said...

Unquestionably, I’m a sucker for it, fascinating and well-founded words. Remember to write more interesting content articles in your.