PHP mapscript es una librería para ampliar funcionalidades a PHP de manera que trabaje con MapServer.
Para comenzar a trabajar con MapScript recomiendo leer los posts sobre MapScript por un compatriota Jaime M. Tan Nozawa:
http://softwarelibre.lamula.pe/2007/11/05/php-mapscript-de-mapserver-parte-1-conceptos/
Además de la documentación de PHP mapscript
http://mapserver.org/mapscript/php/index.html
Dado que para publicar capas con MapServer se tiene que configurar una estructura de datos con nombres, fuentes de datos, descripción, metadatos, etc, (MapFile) me parece redundante tener que a su vez crear nuevamente una estructura de datos en javascript para visualizar el servicio creado.
Debido a ello, y sabiendo el potencial de MapScript para manejar y manipular MapFiles, decidí crear un código que genere dinámicamente el código javascript para visualizar un servidor MapServer en base a su MapFile.
Descargue el código del siguiente enlace: | |
gisweb.php en zip |
Para crear este script lo primero que hice fue diseñar un cliente con MapFish (ver post). Luego tomé las secciones que varían de MapFile en MapFile e inserté el código PHP necesario para que lea la información y cree el javascript dinámicamente.
Debido a que estoy trabajando con dos lenguajes de programación en un post y tratando de explicarlos, he tratado de poner guías como OL cuando hablo de objetos de OpenLayers y MS cuando hablo de objetos de MapServer y MapScript cuando considero que las cosas son un poco confusas. Pero dejo a los comentarios el pedir aclaraciones con respecto a los términos.
1. Cargando la Librería
<?php if (!extension_loaded("MapScript")) dl('php_mapscript.'.PHP_SHLIB_SUFFIX); ?>
Si se configura correctamente el php.ini para incluir MapScript no es necesario agregar esta linea, sin embargo, de manera mas específica solicita que se cargue si es que no está predeterminado que lo haga.
2. Declarando variables globales
<?php $nombreMapa = $_GET['gis']; if (!lnonly($nombreMapa)) exit("Error en el parametro 'mapa' del url."); $jMap = ms_newMapObj("/gismap/".$nombreMapa.".map"); $wms_title=$jMap->web->metadata->get("wms_title"); $wms_srs=strtok(trim($jMap->web->metadata->get("wms_srs")), " "); $wms_onlineresource=$jMap->web->metadata->get("wms_onlineresource"); $map_extent=$jMap->extent; ?>
Las variables que declaro son necesarias en el resto del código y/o son llamadas muy comunes:
$jMap es el objeto mapa. Para crearlo es necesario como parámetro su ubicación. Por seguridad solo permito MapFiles dentro de la carpeta /gismap/ y solo permito nombres alfanuméricos (no espacios ni ningún otro símbolo).
$wms_title es el título del servidor wms escrito en la metadata del MapFile.
$wms_srs es la proyección. La proyección es un poco problemática en términos de la lectura de la variable. La razón es que se pueden tener varias proyecciones, por ejemplo: “EPSG:32717 EPSG:4326”. Yo asumo que solo hay uno y si hubieran varios tomo el primero, sin embargo me parece que ahí se podría crear la funcionalidad de trabajar con las distintas proyecciones que ofrece el mapa.
$wms_onlineresource es el enlace al servidor WMS.
$map_extent es la extensión del mapa en coordenadas.
3. Título del Mapa
<h1 style="font-size: 20px;"><?php echo $wms_title; ?></h1>
Utilizamos la variable $wms_title para darle un título al mapa
4. Parámetros del Mapa
var options = { units:'meters', maxExtent: new OpenLayers.Bounds(<?php echo $map_extent->minx.",". $map_extent->miny.",". $map_extent->maxx.",". $map_extent->maxy; ?>), projection:new OpenLayers.Projection("<?php echo $wms_srs; ?>"), maxResolution: <?php echo ($map_extent->maxx-$map_extent->minx)/200; ?>, maxZoomLevel: 10 };
mapita=new OpenLayers.Control.OverviewMap( { div: $('overviewmap'), mapOptions:{ maxResolution: <?php echo ($map_extent->maxx-$map_extent->minx)/50; ?>, minResolution: <?php echo ($map_extent->maxx-$map_extent->minx)/400; ?> } });
Los parámetros del mapa que cambian de acuerdo al MapFile tienen que ver con la extensión y proyección del mapa.
Los bordes (bounds) permiten identificar el área del mundo que se observará en el mapa.
La proyección había sido obtenida en los parámetros globales.
Las resoluciones son cálculos basados en la extensión y también importante, en las unidades en las que están estas coordenadas (a pesar que las unidades están en hard code como metros, eso tiende a no hacer mucho efecto en el mapa).
El divisor de las resoluciones debería ser la extensión en píxeles del mapa en el html (alto o ancho), sin embargo, este número simplemente sirve de base para ir ajustando a la resolución que se vea mejor. Los número que se ven son los que funcionaron mejor para todos mis ejemplos.
5. Capas
<?php $jCapas=$jMap->getAllLayerNames(); foreach ($jCapas as $idx => $layer) { $capaObj=$jMap->getLayerByName($layer); $esBase=false; if ($capaObj->metadata->get("JC_BASE")!=") $esBase=$capaObj->metadata->get("JC_BASE"); else if ($capaObj->type==MS_LAYER_POLYGON || $capaObj->type==MS_LAYER_RASTER) $esBase=true; else $esBase=false; $visibility=($capaObj->status==MS_ON?"true":"false"); $singleTile=(($capaObj->labelitem!=")?"true":"false"); echo "tt".label_encode($capaObj->name). " = new OpenLayers.Layer.WMS(". "{$capaObj->name}",". "{$wms_onlineresource}",". "{". "units:'m',". "layers:'{$capaObj->name}',". "transparent:true,". "format:'image/png',". "'VERSION':"1.1.1". "},". "{". "isBaseLayer:".$esBase.",". "projection: new OpenLayers.Projection("{$wms_srs}"),". "visibility:".$visibility.",". "singleTile:".$singleTile. "}". ");n"; echo "ttmap.addLayers([".label_encode($capaObj->name)."]);n"; echo "ttmap.raiseLayer(".label_encode($capaObj->name).",-".$idx.");n"; } ?>
En este código obtenemos todas las capas con llamada getAllLayerNames() y con cada una de ellas generamos el código javascript que cree el objeto Layer de OpenLayers(OL) y lo agregue al mapa(OL).
5.1 isBaseLayer
Lo primero que necesitamos es definir si la capa es base (isBaseLayer). Para esto se asumen 2 reglas:
- Si es que contiene un campo de metadata (MS) llamado JC_BASE, entonces ese campo define si la capa es base o no. No existe limitante en términos de como “crear un nuevo campo de metadatos”, es decir, se puede simplemente editar el MapFile y agregarlos manualmente.
- De no existir el campo JC_BASE, entonces si es una capa (OL) Raster o Poligonal se trate toma como base, sino se toma como no base.
5.2 Visibilidad
Lo siguiente es determinar la visibilidad. En este caso admito que puedo estar errado en asignarlo de acuerdo al estado MS_ON, la documentación de MapServer no es muy clara. En todo caso, las capas me aparecen apagadas y he llegado a pensar que es lo mejor considerando la posibilidad de ejemplos con una gran cantidad de capas.
5.3 singleTile
Luego determinamos si la capa será tratada como un solo tile o como una serie de tiles pegados uno al otro. La idea de trabajar con múltiples tiles es que se tengan múltiples paneles que mejoren la manera en la que el usuario ve los mapas mientras están cargando y mientras se está moviendo por ellos. Sin embargo, el problema es que cuando se fracciona los mapas con etiquetas (labels) en múltiples tiles se genera fraccionamiento en los textos, debido a que cada tile es generado independientemente y sin la idea de que sean parte de un todo.
Para evitar que se genere este efecto, se utiliza singleTile cuando una capa posee el elemento labelitem (MS)
5.4 Creación de la variable Layer (OL)
Al crear la variable primero se crea su nombre con la llamada a la función label_enconde que elimina los espacios en blanco y otros caracteres para adaptar el nombre de la capa, y creamos el objeto OpenLayers.Layer.WMS (ciertos parámetros están en Hard Code, obviamente el código ha sido diseñado tomando un caso base en el cual funciona. Para hacerlo funcionar en otros casos se tiene simplemente que cambiar el Hard Code o pasar los datos como parámetro).
5.5 Añadir la Capa al mapa
Además de hacer la llamada a addLayers, también hago una llamada a raiseLayer para evitar que el orden en el que se insertan las capas haga que se vean en orden inverso en el cliente MapFish.
6. Modelo para LayerSwitcher (selector de capas)
var model = [ <?php $primero=true; $grupo=''; foreach ($jCapas as $idx => $layer) { $capaObj=$jMap->getLayerByName($layer); if ($grupo!=$capaObj->getMetaData('wms_layer_group')) { if ($grupo!='') { echo "tttt ]n". "ttt }n"; } $grupo=$capaObj->getMetaData('wms_layer_group'); if ($grupo!='') { if ($primero) $primero=false; else echo "ttt ,n"; echo "ttt {n". "tttt text:"{$grupo}",n". "tttt leaf:false,n". "tttt expanded:true,n". "tttt children:[n"; } } else if ($primero) $primero=false; else echo "ttt ,n"; echo "ttt {n". "tttt text:"{$capaObj->getMetaData('wms_title')}",n", "tttt layerName:"{$capaObj->name}",n", "tttt checked:false,n"; if (($capaObj->numclasses)>1){ echo "n". "tttt leaf:false,n". "tttt expanded:false,n". "tttt children:[n"; $primero2=true; for($i=0;$capaObj->getClass($i);$i++){ if ($primero2) $primero2=false; else echo "tttt ,n"; $Class = $capaObj->getClass($i); echo "tttt {n". "ttttt text:"{$Class->name}",n". "ttttt icon:".$wms_onlineresource.(strstr($wms_onlineresource,"?")?"&":"?"). "LAYER=".rawurlencode($capaObj->name). "&RULE=".rawurlencode($Class->name). "&SERVICE=WMS". "&VERSION=1.1.1". "&REQUEST=GetLegendGraphic". "&FORMAT=image%2Fpng". "&WIDTH=16". "&HEIGHT=16",". "ttttt leaf:truen". "tttt }n"; } echo "tttt ]n"; } else{ echo "n". "tttt leaf:true,n". "tttt icon:".$wms_onlineresource.(strstr($wms_onlineresource,"?")?"&":"?"). "LAYER=".rawurlencode($capaObj->name). "&RULE=".rawurlencode($capaObj->getClass(0)->name). "&SERVICE=WMS". "&VERSION=1.1.1". "&REQUEST=GetLegendGraphic". "&FORMAT=image%2Fpng". "&WIDTH=16&HEIGHT=16"n"; } echo "ttt }n"; } if ($grupo!='') echo "ttt ]nttt}n"; ?> ];
Ya he mencionado en el post anterior sobre MapFish que existe la opción de que el LayerSwitcher (OL) cree automáticamente el árbol que va a mostrar. Sin embargo, esa opción es muy simple y no maneja temas como layer_group (MS), que es un campo de metadata que se interpreta casi como carpetas en las cuales pueden estar las capas. La lógica que sigo para crear el modelo es la siguiente:
- Los layer_group son obviamente los primeros en ir después de la raiz. También en la raíz están aquellas capas (MS) que no tiene layer_group (MS).
- Las capas (MS) se insertan en la raíz o en su determinado layer_group y si es que tienen una sola clase (leyenda de 1 elemento) entonces la capa no tendrá nodos hijos y si tiene mas de una clase (leyenda de mas elementos) entonces su nodo a su vez tendrá como hijos la descripción de cada clase y su icono.
Descargue el código del siguiente enlace: | |
gisweb.php en zip |
Edit: Debido a algunos comentarios realizados de manera privada me he percatado que he agregado algunas cosas a la carpeta mfbase por lo que pongo mi versión para descargar mfbase (cliente web parte de MapFish)
Saludos.
Gracias Juan Carlos por compartir el código; excelente trabajo, ingenioso, útil.
Lo he probado y funciona muy bien.
Felicidades y gracias de nuevo desde Venezuela.
Tus comentarios son muy generosos. Me alegra saber que mi trabajo es apreciado y útil. Gracias.
Saludos
Muy buen aporte, excelente trabajo … 10 puntos … saludos desde peru.
hola ! la verdad que es muy buen material. estoy aprendiendo mucho gracias a usted!!
soy de Argentina. Me llamo Ezequiel, lo que si me esta tirando un error, yo necesito poder llamar un mapfile que esta en otro computadora por lo que cambie la ruta
$jMap = ms_newMapObj("/gismap/".$nombreMapa.".map");
a algo asi:
$jMap = ms_newMapObj("http://10.50.5.70/saludos/".$nombreMapa.".map");
es decir que busque el mapfile de otra computadora.
su busco http:///10.50.5.70/saludos/hola.map en el explorer lo puedo ver tranquilamente, pero si tiro el gisweb.php?gis=hola me tira el siguiente error:
Warning: [MapServer Error]: msLoadMap(): (http://10.50.5.70/saludos/h…) in /var/www/website/htdocs/ms1/gisweb.php on line 87
porque sera?
un saludo muy grande !! tus posteos son geniales!! realmente estoy aprendiendo mucho !
Ezequiel,
Buenos Aires, Argentina
Saludos Ezequiel,
Agradezco mucho tus comentarios, que bueno que pueda ayudar a otros como en algun momento otros recursos me ayudaron a mi.
Con respecto a tu problema, es que estás insertando una ruta que utiliza el protocolo HTTP lo cual no es una ruta del sistema de archivos. Explorer y los manejadores de archivos abren estas direcciones como una facilidad al usuario pero es importante entender que son cosas distintas.
Copia el archivo que puedes descargar a una carpeta local, o si es que necesitas tener centralizado el .map puedes probar como archivo compartido y accediendo \ipruta (windows o samba) o ip:/ruta (linux). (OJO que tiene que ser la ruta de archivo compartido y no la de HTTP).
Juan Carlos, dese ya muchas gracias por la ayuda que nos estas dando con todo esto, yo soy amigo de ezequiel y estaba queriendo realizarlo como mencionaste pero me arroja el sgte. error :S
Warning: [MapServer Error]: msLoadMap(): (10.50.5.70:/c$/ms4w/Apache/htdocs/saludos/hola.map) in /var/www/website/htdocs/gisweb.php on line 89
Warning: [MapServer Error]: msLoadMap(): (http://10.50.5.70/saludos/.map) in /var/www/website/htdocs/gisweb.php on line 89
Warning: [MapServer Error]: msLoadMap(): (http://10.50.5.70/saludos/m…) in /var/www/website/htdocs/gisweb.php on line 89
Warning: [MapServer Error]: msLoadMap(): (http://10.50.5.70/saludos/m…) in /var/www/website/htdocs/gisweb.php on line 89
Warning: Failed to open map file 10.50.5.70:/c$/ms4w/Apache/htdocs/saludos/hola.map in /var/www/website/htdocs/gisweb.php on line 89
Fatal error: Call to a member function get() on a non-object in /var/www/website/htdocs/gisweb.php on line 95
si me puedes dar una mano, estaria mas que agradecido..
Muchas gracias,
Damian, Buenos Aires
Hola Damian, al parecer siguen intentando acceder mediante http (la ruta no debe comenzar con (http://)
buenos dias! he seguido paso a paso tu blog, pero al probar el archivo gisweb.php no se me muestra el mapa. Se queda cargando el archivo .map.
Juan Carlos! muchisimas gracias por las rapidas respuestas. ahora mismo vamos a seguir haciendo pruebas. por ahora seguimos pegados al html, pero bueno seguimos luchando para ver como sacarlo andando!,. tienes un correo electronico? estas abierto a trabajar como consultor para un organismo del gobierno en buenos aires, Argentina?
🙂
saludos!
Ezequiel Vladimir Bellini
@Ezequiel Te envié un correo. saludos.
@hvasquez Necesitas buscar mas información con respecto a por qué se produce el error.
Intenta abrir tu página en mozilla o chrome y ver que errores de javascript se producen (ie8 también tiene debugger pero no lo he probado).
Si es algo de servidor como lo mencionas, habilita la visualización de errores (display_errors) de manera que puedas ver por que se queda en ese paso.
Saludos.
Este es un ejemplo de un código muy útil porque efectivamente ahorra trabajo y el compartirlo con los demás es de muy agradecer.
Saludos,
Jose Carlos
http://www.programadorphpfr…
Hola:
Muchas gracias por todo este trabajo y los videos que has colgado en Youtube, me están ayudando mucho.
Con este gisweb.php estoy teniendo un problema similar a hvasquez, que Javascript se queda cargando el archivo map. He mirado en la consola de errores de Firefox y me aparecen varias advertencias y un error:
Error en gisweb.php:
Error: syntax error
Archivo de origen: http://mapserverdemo/gisweb…
Línea: 179, columna: 7
Código fuente:
eLayer:,projection: new OpenLayers.Projection("EPSG:25830"),visibility:true,singleTile:false});
Mirando el código php referido:
"{".
"isBaseLayer:".$esBase.",".
"projection: new OpenLayers.Projection("{$wms_srs}"),".
"visibility:".$visibility.",".
"singleTile:".$singleTile.
parece ser que la variable $esBase la deja "vacía", dando el error. En mi .map tengo 5 capas (3 poligonales y 2 de tipo LINE), no tengo ninguna capa base definida.
Gracias y un saludo
Hola Juan Carlos. Antes de todo perdóname se mi castellano no es el mejor, mi habla principal es el portugués de Brasil.
Muchísimas gracias por los tutoriales y todo. Hace algunos años empecé con Mapserver pero realicé que no había como establecer una forma de trabajo practica, que se pudiera utilizarse en el día a día, principalmente visto que no soy expert en programación pero si me gusta mucho los asuntos de SIG. Veo que ahora las herramientas son muchas y por la primera vez ahora, a partir de su aula http://www.youtube.com/watc… y los tutoriales conseguí establecer una línea de producción en la disponibilizacion de mapas simples, quizás puede ser manejado por usuarios finales con algunos simples ajustes. Muchas gracias por la oportunidad.
Algunos puntos interesantes en relación a todo lo proceso (en mi caso):
1- El gvSIG parece que no le gusta las versiones mas recentes de Mapserver. No he conseguido cargar de WMS 1.3 (mapserver 5.6), tanto en gvSIG 1.1.2 como en gvSIG 1.9., considerando el mapfile previamente creado por el modulo de publicación en el 1.1.2. Creo sea un bug con gvSIG porque los mapfiles creados en el modulo de publicación se han cargado perfectamente con su script PHP. He conseguido apenas cargar de WMS utilizando versión compilada de mapserver 5.4 y WMS 1.1.1 (versiones de WMS informadas por gvSIG).
2- En su código PHP hay un pequeño "problema" cuando interpretado por versiones mas recentes de PHP (acá PHP5.4 en Ubuntu). El comando ‘ereg_replace’ tiene que se substituir por ‘preg_replace’. ereg_replace está "deprecated" en las últimas versiones de PHP.
Gracias, suerte en todo e saludos desde Brasil.
Rodrigo
Hola, queria preguntar si cuando se genera un mapa se pueden agrear puntos(con coordenadas) simulando una trayectoria de un vehiculo.
Hola Ariel,
Como está planteado el programa no, pero se puede adaptar.
Puedes agregar una ruta determinada (por ejemplo: ruta de Buses), y representarla con este script. El "dinamismo" de mi programa es para evitar configurar el cliente si el servidor ya tiene la información, pero si lo que buscas es por ejemplo hacer click en 2 puntos y que el sistema represente la ruta entre ellos entonces estamos hablando de otra forma de "dinamismo" (disculpen las comillas mal usadas, no hay negrita)
Si buscas algo mas orientado al segundo caso que te propongo entonces deberías revisar pgRouting (http://pgrouting.postlbs.org/).
Aprovecho para comentarte que en el momento estoy trabajando en una herramienta con ese dinamismo.
Saludos
Saludos Juan Carlos.
En primer lugar darte mis felicitaciones por la entrada y el blog en general.
Intentaré ser claro en mi problema por si me puedes ayudar.
Sobre una máquina Ubuntu con servidor apache2 he intentado probar el fichero gisweb.php. He creado el .map sin problema con gvsig, el fichero y datos están en las carpetas /gismap y /gisdata.
Tengo instalado igualmente mapfish (no sé si es necesario) y copiado tu carpeta mfbase en /mfbase.
Al intentar abrir gisweb.php (http://localhost/gisweb.php…) la aplicación se queda iniciando.
Revisado con firebug me sale el siguiente mensaje:
Ext is not defined
[Break on this error] Ext.BLANK_IMAGE_URL = ‘/mfbase/ext/resources/images/default/s.gif’;
Y aqui me quedé. ¿Me podrías ayudar?. De ante mano muchas gracias.
Patricio Soriano
Jose Carlos, gracias por tus comentarios.
Rodrigo, muchas gracias por tus aportes.
Patricio,
Ext es una variable de la librería ExtJS (http://dev.sencha.com/deplo…), que es utilizada por MapFish. El error indica que no está inicializándose o leyendola correctamente.
Te recomiendo que revises el código fuente del javascript generado, tal vez algún warning o error del php no se esté mostrando pero si se esté imprimiendo dentro del código volviéndolo inservible.
Si todo pareciera estar bien, otra opción es que grabes la página generada por php como un html estático y comiences a editarlo simplificándolo hasta hacerlo funcionar, así podrás identificar por qué deja de hacerlo.
Saludos
hola tu trabajajo es muy interesante pero no me funciona tengo problema al cargar el archivo punto map
Fatal error: Call to a member function get() on a non-object in C:ms4wApachehtdocsgismapgisweb.php on line 50
la verdad no se como resolverlo si me puedes ayudar me ayudarias mucho
gracias
Buenas noches Juan Carlos,
Saludos desde Colombia,
Tengo un error bien grave que no he podido dar con el, el error se presenta en javascript, la verdad no se si es porque halla configurado el .map (que dudo mucho ya que lo genere con gvSIG).
El error se produce cuando llamo el metodo map.zoomToMaxExtent(); la una forma que me pude dar cuenta fue con el debug de google crhome y el firebug de mozilla.
el error que sale es el siguiente
1972Uncaught TypeError: Cannot call method ‘getCenterLonLat’ of null
OpenLayers.Map.OpenLayers.Class.zoomToExtent Map.js:1972
OpenLayers.Map.OpenLayers.Class.zoomToMaxExtent Map.js:2016
createToolbar gisweb.php:191
y se produce porque bounds se encuentra null e intenta llamar al metodo getCenterLonLat(), no se que pasara… pero al ocorrir ese error se queda el div con la mascara de "cargando…".
espero me pueda ayudar Juan Carlos, o cualquier otro que se halla presentando el mismo caso mio, de antemano doy muchas gracias.
saludos..
tengo un error a la hora de publicar el wms del archivo .map, ya que cuando le doy conectar en gvSIG me sale un aviso que no es posible la conexion con el wms.
Tengo instalado el ms4w con mapserver 4.
Espero que me puedan ayudar…gracias..
Hola Juan Carlos, Excelentes vídeos, te escribo desde Cartagena,Colombia, soy Ing. Sistemas y estoy trabajando algo de GPS desde mi movil Android, de hecho envió la posiciones desde mi movil a un servidor web, almacenándo las posiciones en una BD de MYSQL, eh hecho la representación de los mapas con OpenLayers, ej: http://200.6.171.210/ol_cf, pero ahora como le hago para representar los puntos por donde se mueve mi movil que esta en la BD, eh investigado y no lograr encontrar software open que me ayude a realizar dicha tarea, de acuerdo a las investigaciones esto se llama creo TRANKING(rastreo), que que hago para representar los puntos cardinales en una mapa desde una BD o tambien?, si puedes ayudarme con cualquier link o tutorial o ejemplo te lo agradezco.
Hola Juan Carlos, Excelentes vídeos, te escribo desde Cartagena,Colombia, soy Ing. Sistemas y estoy trabajando algo de GPS desde mi movil Android, de hecho envió la posiciones desde mi movil a un servidor web, almacenándo las posiciones en una BD de MYSQL, eh hecho la representación de los mapas con OpenLayers, ej: http://200.6.171.210/ol_cf, pero ahora como le hago para representar los puntos por donde se mueve mi movil que esta en la BD, eh investigado y no lograr encontrar software open que me ayude a realizar dicha tarea, de acuerdo a las investigaciones esto se llama creo TRANKING(rastreo), que que hago para representar los puntos cardinales en una mapa desde una BD o tambien?, si puedes ayudarme con cualquier link o tutorial o ejemplo te lo agradezco.
Hola Ernesto, si lo que deseas es representar puntos almacenados en una base de datos puedes hacerlo de 2 formas:
1. Utilizar una base de datos GIS como postgis o mysql spatial extension y configurar un servidor GIS como mapserver o geoserver para mostrarlas.
2. crea un php que tome la información y forme un archivo en formato vectorias (Ej Well Known Text)
Disculpa tengo un pequeño gran problema, resulta que ya realice varias pruebas y despues de mucho puede echar a andar gran parte del ejemplo, ahorita tengo el problema de que al momento de obtener la informacion del metadata no encuentra ninguna llave. Sin embargo al cargar el mapfile desde el gvSIG, me muestra correctamente la informacion. Alguna idea?
Saludos, tengo varios dias tratando de hacer el ejercicio, pero me sale el siguiente error
Call to undefined method webObj::get() in /var/www/gisweb/gisweb.php on line 78
es en la parte dnd se sacan los sisguienes parametros
$wms_title=$jMap->web->metadata->get("wms_title");
Ojala y me pudieras ayudar, o si puedes subir un .map de jemplo
Tendrás algun tutorial, o algun sitio donde se pueda estudiar lo que te comentó Ernesto Javier Rua Aguirre…?
Tambien me interesa estudiar el tema de Tracking…
Buenas, estoy interesado en contactarme con una empresa o profesional para hacer un diseño de base de datos SIG. En mi centro laboral contamos con ArcGIS 10, ArcGIS 10 SERVER también. Si alguien puede hacer ese tpo de trabajo contactse conmigo pro favor para mas detalles.
hola estoy trabajando con Gvsig e visto el tutorial Demo1 pero donde me queda la duda es cuando utiliza el mapfish no se como crea el archivo para publicacion, ya me esta corriendo desde gvsig ya tengo las capas pero como le hago para que mi mapfile(.map) se vizualise en el navegador es que usted ya lo tiene por defento y eso no se explica. me prodria decir JC ya lei sobre mapfish pero no me queda muy claro no se si pudiera realizar un video o si ya lo tiene si podria proporcionarlo estoy trabajando sobre linux (ubuntu) espero contestacion muchas gracias 🙂
Hola juan carlos no le entiendo muy bien a todo esto soy nuevo no podrias hacer un video de como hacerlo ,primero creas el archivo .map desde gvsig ya pude publicar solo la imagen. Pero lo que me hace falta es vizualizar el mapa en el navegador con las capas, poder darle un zoom, mover y demas. Ya que estube revisando tu blog pero no logro comprender cuales son los archivos que debo modificar para vizualizar mi mapa es urgente por favor ayudame