<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GIS &#38; Chips &#187; pepe</title>
	<atom:link href="http://www.gisandchips.org/author/pepe/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gisandchips.org</link>
	<description>Geografía útil para llevar</description>
	<lastBuildDate>Tue, 29 Nov 2011 10:38:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>API de Google + OpenStreetMap y otros servicios georreferenciados</title>
		<link>http://www.gisandchips.org/2010/03/24/api-de-google-openstreetmap-y-otros-servicios-georreferenciados/</link>
		<comments>http://www.gisandchips.org/2010/03/24/api-de-google-openstreetmap-y-otros-servicios-georreferenciados/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 11:22:00 +0000</pubDate>
		<dc:creator>pepe</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[OpenStreetMap]]></category>

		<guid isPermaLink="false">http://www.gisandchips.org/?p=1551</guid>
		<description><![CDATA[Voy a tratar de diseñar un visor de cartografía utilizando el API de Google Maps ( si quereis saber más sobre este tema, podeis leer artículos en esta misma web que hacen referencia:  Google Web Toolkit &#38; Google Maps, Integración de un servicio WMS en GoogleMaps usando GWT )  con la cartografía de OpenStreetMap y [...]]]></description>
			<content:encoded><![CDATA[<p>Voy a tratar de diseñar un visor de cartografía utilizando el <a href="http://code.google.com/intl/es/apis/maps/" target="_blank"><strong>API </strong>de <strong>Google Maps</strong></a> ( si quereis saber más sobre este tema, podeis leer artículos en esta misma web que hacen referencia:  <a title="Google Web Toolkit &amp; Google Maps" href="../2009/11/20/google-web-toolkit-google-maps/"><a href="http://www.gisandchips.org/2009/11/20/google-web-toolkit-google-maps/" target="_blank">Google Web Toolkit &amp;  Google Maps</a>,</a><a title="Integración de un servicio WMS en GoogleMaps usando GWT" href="http://www.gisandchips.org/2010/01/18/integracion-de-un-servicio-wms-en-googlemaps-usando-gwt/" target="_self"> Integración  de un servicio WMS en GoogleMaps usando GWT </a>)  con  la cartografía de <a href="http://www.openstreetmap.org" target="_blank"><strong>OpenStreetMap</strong></a> y además voy a incluir datos de servicios de tipo  georeferenciado (<a href="http://www.panoramio.com" target="_blank"><strong>panoramio</strong></a>, <a href="http://www.youtube.com" target="_blank"><strong>youtube</strong></a>, <a href="http://www.flickr.com" target="_blank"><strong>flickr</strong></a>, <strong>kml</strong>, <a href="http://es.wikipedia.org" target="_blank"><strong>wikipedia</strong></a>,&#8230;) en dicho mapa.</p>
<p><a href="http://www.gisandchips.org/wp-content/mapa.png"><img class="alignleft size-medium wp-image-1567" style="margin-left: 5px;margin-right: 5px;border: 0pt none" src="http://www.gisandchips.org/wp-content/mapa-300x170.png" alt="Muestra un curioso mapa mundial lleno de etiquetas de los servicios georreferenciados" width="300" height="170" /></a>Ya aviso que, una vez que muestro todos los servicios en el mapa,  queda  un mapa demasiado lleno de elementos, pero eso  es justo lo que  pretendo con este visor, tener todos los elementos en el mismo mapa y  que se visualicen tanto fotos, videos, artículos de la wikipedia,kml,&#8230;  a la vez, permitiéndo incluso añadir muchos más elementos.</p>
<p>En primer lugar, para mostrar el mapa de <strong>Google Maps</strong>, necesito registrar la clave previamente para el sitio web en cuestion que voy a tratar.</p>
<p><span id="more-1551"></span></p>
<p>Y una vez registrada la clave ya se puede realizar el visor,  la programación del visor sería la siguiente:</p>
<pre class="brush: php; title: ; notranslate">
//Hojas de estilo de google maps
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/reset-fonts-grids/reset-fonts-grids.css&quot;&gt;
 &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/base/base-min.css&quot;&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=clave_registrada_en_google&quot;&gt;&lt;/script&gt;

&lt;script
type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
 google.load(&quot;maps&quot;, &quot;2.x&quot;);

 function load()
 {
 if (!GBrowserIsCompatible())
 return;

 //definicion de variable de copyright del mapa
 var copyOSM = new GCopyrightCollection(&quot;GIS&amp;Chips 2010&quot;);
 copyOSM.addCopyright(new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, &quot; &quot;));

 //definicion de las tiles de OpenStreetMap que iran por bajo del mapa
 var tilesMapnik     = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'});
 var tilesOsmarender = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tah.openstreetmap.org/Tiles/tile/{Z}/{X}/{Y}.png'});
 var tilesCycle = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://a.andy.sandbox.cloudmade.com/tiles/cycle/{Z}/{X}/{Y}.png'});

 var mapMapnik     = new GMapType([tilesMapnik],     G_NORMAL_MAP.getProjection(), &quot;Mapnik&quot;);
 var mapOsmarender = new GMapType([tilesOsmarender], G_NORMAL_MAP.getProjection(), &quot;Osmarend&quot;);
 var mapCycleMap = new GMapType([tilesCycle], G_NORMAL_MAP.getProjection(), &quot;CycleMap&quot;);

 //definicion de mapa incluyendo los tres tiles de OpenStreetMap

 var map           = new GMap2(document.getElementById(&quot;map&quot;), { mapTypes: [mapMapnik, mapOsmarender,mapCycleMap] });

 //se añaden los controles de mapa del API de Google Maps
 map.addControl(new GLargeMapControl()); //control de desplazamiento y acercamiento de gran tamaño empleado en  Google Maps.
 map.addControl(new GMapTypeControl());  //Permite alternar entre los diferentes tipos de mapas (en este caso las tres tiles)
 map.addControl(new GOverviewMapControl()); //Este control nos permite mostrar una ventana de vista rápida contraible

//Situado el centro, las coordenadas de la Universidad de Alicante
 map.setCenter( new GLatLng(38.38575, -0.51486), 16);

 map.enableScrollWheelZoom();
 map.enableContinuousZoom();

 //Se definen como GLayers los servicios georeferenciados que quiero incluir

 var wikipedia = new GLayer(&quot;org.wikipedia.es&quot;);
 var panoramio = new GLayer(&quot;com.panoramio.all&quot;);
 var youtube = new GLayer(&quot;com.youtube.all&quot;);
 var webcam = new GLayer(&quot;com.google.webcams&quot;);

 map.addOverlay(wikipedia);
 map.addOverlay(panoramio);
 map.addOverlay(youtube);
 map.addOverlay(webcam);

 //En este caso como los servicios son un xml se añaden como GGeoXML(tanto el api de flickr como cualquier KML que quiera incluir lo debo definir as�)
 var geoXmlFlickr;
 geoXmlFlickr = new GGeoXml(&quot;http://api.flickr.com/services/feeds/geo/?tags=universidad+alicante&quot;);
 map.addOverlay(geoXmlFlickr);

//Ejemplo de introducción de un KML
 var tram = new GGeoXml(&quot;http://www.sigua.ua.es/web/utils/acceso/kml/TRAM4.kml&quot;);
 map.addOverlay(tram);
 }
</pre>
<p style="text-align: center">Aqui se puede ver como se muestra en el mapa el KML importado<br />
<a href="http://www.gisandchips.org/wp-content/kml.png"><img class="size-medium wp-image-1560 aligncenter" src="http://www.gisandchips.org/wp-content/kml-300x246.png" alt="Se muestra como queda la integracion de un archivo kml con información sobre una linea de tranvia en Alicante en el mapa anteriormente desarrollado" width="300" height="246" /></a></p>
<pre class="brush: xml; title: ; notranslate">

 &lt;/script&gt;

 &lt;/head&gt;

 &lt;body onload=&quot;load()&quot; onunload=&quot;GUnload()&quot;&gt;
 &lt;div&gt;
 &lt;div role=&quot;main&quot;&gt;
 &lt;div&gt;
 &lt;div id=&quot;map&quot; style=&quot;width: 100%; height: 600px;&quot;&gt;&lt;/div&gt;

 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
</pre>
<p>El visor completo con todos los datos estaría accesible desde la siguiente URL:<br />
<a class="aligncenter" title="Mapa " href="http://www.gisandchips.org/demos/pepe/osm/test.html" target="_blank">http://www.gisandchips.org/demos/pepe/osm/test.html</a></p>
<p>Como digo, este mapa incluye tantos elementos que a veces es un poco  extraño, pero es justo lo que pretendía, incluir muchos servicios en un  mismo mapa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gisandchips.org/2010/03/24/api-de-google-openstreetmap-y-otros-servicios-georreferenciados/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Aumentar velocidad de carga de un mapfile utilizando simplificación de geometrías</title>
		<link>http://www.gisandchips.org/2009/11/05/aumentar-velocidad-de-carga-de-un-mapfile-utilizando-simplificacion-de-geometrias/</link>
		<comments>http://www.gisandchips.org/2009/11/05/aumentar-velocidad-de-carga-de-un-mapfile-utilizando-simplificacion-de-geometrias/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 11:48:58 +0000</pubDate>
		<dc:creator>pepe</dc:creator>
				<category><![CDATA[Comparativa]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[geometry simplification]]></category>
		<category><![CDATA[mapfile]]></category>
		<category><![CDATA[mapscript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://www.gisandchips.org/?p=492</guid>
		<description><![CDATA[En el anterior post creamos un mapfile dinámicamente con PHPMapScript, ahora lo que vamos a ver es como conseguir que la velocidad de carga de este mapfile se reduzca de forma considerable utilizando simplificación de geometrías mediante una función en PostGIS, esperando obtener un mapa con los municipios de toda España. Resultado esperado: El código [...]]]></description>
			<content:encoded><![CDATA[<p>En el anterior <a href="http://www.gisandchips.org/2009/11/02/creacion-de-un-mapfile-de-forma-dinamica-al-vuelo/" target="_blank">post</a> creamos un mapfile dinámicamente con PHPMapScript, ahora lo que vamos a ver es como conseguir que la velocidad de carga de este mapfile se reduzca de forma considerable utilizando simplificación de geometrías mediante una función en PostGIS, esperando obtener un mapa con los municipios de toda España.</p>
<p style="text-align: center;">Resultado esperado:<img class="aligncenter size-full wp-image-1082" title="4b024cb4_7df_1" src="http://www.gisandchips.org/wp-content/4b024cb4_7df_1.gif" alt="Mapa simplificado" width="300" height="300" /></p>
<p style="text-align: center;">
<p>El código de generación del mapfile será el mismo que en el  <a href="http://www.gisandchips.org/2009/11/02/creacion-de-un-mapfile-de-forma-dinamica-al-vuelo/" target="_blank">post</a> de creación del mapfile &#8220;al vuelo&#8221;, tan solo habría que cambiar la forma de obtener los datos, para que en lugar de obtenerlos con una simple sentencia sql, llamar a una función que obtuviera las geometrías simplificadas a costa de perder nivel de detalle (inapreciable a la vista).</p>
<p><span id="more-492"></span></p>
<p>Cuando se trata de simplificar geometrías hay que tener en cuenta la dimensión del mapa que queremos obtener para en función de esta dimensión, poder obtener de alguna forma un coeficiente de simplificación que se adecue a la simplificación que pretendemos obtener (es decir, ni que no nos haga casi simplificación, ni que simplifique demasiado).</p>
<p>Para obtener este factor de simplificación, podemos hacer varias operaciones, en este caso realizaremos una operación como la siguiente, dividiremos el resultado de restar a la xmax la xmin de la entensión de la geometria entre el ancho del mapa que queremos obtener.</p>
<p>Es decir, obtenemos la extensión de la geometría que estamos analizando , sacamos al xmax y la xmin, las restamos y el resultado lo dividimos entre el ancho del mapa que queremos obtener:</p>
<p>(xmax(extent(geometria) )- xmin(extent(geometria)))/Ancho del mapa</p>
<p>Creamos una función en sql para obtener el factor de simplificación que deseamos:</p>
<pre class="brush: php; title: ; notranslate">
create or replace function fs(float8) returns float8 AS $$
 select (xmax(extent(geometria))-xmin(extent(geometria)))/$1 from ine.municipios;
$$ LANGUAGE SQL;
</pre>
<p>Una vez que tenemos el factor de simplificación obtenido con la función anterior, ya podemos aplicar la simplificación con el factor de simplificación obtenido anteriormente.</p>
<p>Podemos hacer una comparativa del aumento de velocidad entre realizar una consulta sin simplificación y otra con la simplificación, por ejemplo para un mapa bastante grande de 4000px.</p>
<p>1ª consulta: &#8220;<strong><em>select geometria  from municipios2</em></strong>&#8221;</p>
<p>2ª consulta:&#8221;<strong><em>select st_simplify(geometria,factor_simplificacion) from municipios2</em></strong>&#8221;</p>
<p>En PostgreSQL, al ejecutar las dos sentencias podemos comparar y obtener:</p>
<p>1ª consulta</p>
<ul>
<li>Tiempo de ejecución de la consulta: <strong>50,84 segundos</strong></li>
<li>Numero de vertices: <strong>393666</strong></li>
</ul>
<p>2ª consulta</p>
<ul>
<li>Tiempo de ejecución de la consulta: <strong>19,51 segundos</strong></li>
<li>Numero de vertices: <strong>141610</strong></li>
</ul>
<p>De esta manera comprobamos que se produce un aumento en la velocidad a cambio de reducir el nivel de detalle, circunstancia que nos viene bien de cara a la publicación web, ya que no necesitamos un nivel de detalle elevado.</p>
<p>Para constaruir ahora la layer en MapScript, la sentencia SQL para obtener los datos sería como esta:</p>
<pre class="brush: php; title: ; notranslate">
$name = $Layer2-&gt;set(&quot;name&quot;,&quot;Municipios&quot;);
$type = $Layer2-&gt;set(&quot;type&quot;,MS_LAYER_POLYGON);
$status = $Layer2-&gt;set(&quot;status&quot;,MS_ON);
//Conexión con nuestra base de datos que va as er de tipo POSTGIS
$Layer2-&gt;setConnectionType(MS_POSTGIS);
//Cadena de conexión a la base de datos donde tenemos nuestros datos

//En primer lugar, debemos obtener el factor de simplificación que obtenemos mediante consulta a postgresql desde php:
$conexion = pg_pconnect(&quot;host=localhost port=5432 dbname=demos user=postgres&quot;);

$sql=&quot;select fs(&quot;.$Map-&gt;width.&quot;)&quot;;
$resultado=pg_exec($conexion,$sql);
$factor=pg_result($resultado,0,0);

$Layer2-&gt;set(&quot;connection&quot;,&quot;user=postgres dbname=demos host=localhost&quot;);
//Filtro en sql que vamos a introducir para sacar nuestros datos a mostrar, aplicando el factor obtenido anteriormente
$data=&quot;geometria from (select st_simplify(geometria,&quot;.$factor.&quot;) as geometria, nombre,provincia,gid from municipios) as foo using SRID=23030, using unique gid&quot;;
$Layer2-&gt;set(&quot;data&quot;,$data);
//Una vez definida la estructura d ela capa procedemos a definir el estilo de nuestra capa número 1
</pre>
<p>Para la comparación de velocidad de creación de un mapfile con una única capa PostGIS utilizando una sentencia SQL normal y utilizando simplificación de geometrías, utilizando para ello varios test de medición de velocidad de carga, asumimos que vamos a crear un mapa bastante grande de una dimensión de 2000&#215;2000 pixeles.</p>
<p><a href="http://www.gisandchips.org/demos/mapscript/index_norm.php" target="_blank">Sin simplificación de geometrías </a>(tal y como se hizo en el artículo anterior, pero con una sola capa y de tamaño 2000&#215;2000 píxeles)</p>
<p><a href="http://www.gisandchips.org/demos/mapscript/index_simp.php" target="_blank">Con simplificación de geometrías</a> (utilizando la función que hemos programado anteriormente)</p>
<p>Para realizar la comparativa de cargas he utilizado la herramienta <a href="http://www.websitegoodies.com/tools/speed-test.php" target="_blank">Speed-Test </a></p>
<p>El resultado que he obtenido es el siguiente:<br />
(no se aprecia mucha diferencia, pero es debido a que se ha guardado en la caché y no es significativa la diferencia)<br />
- Con la sentencia normal (sin simplificación)</p>
<table style="border: 1px solid #cccccc;" border="0">
<tbody>
<tr>
<td style="padding: 0pt 5px;"><strong>URL:</strong></td>
<td style="padding: 0pt 5px;">http://www.gisandchips.org/demos/mapscript/index_norm.php</td>
</tr>
<tr>
<td style="padding: 0pt 5px;"><strong>Load Time:</strong></td>
<td style="padding: 0pt 5px;">1.048 seconds</td>
</tr>
<tr>
<td style="padding: 0pt 5px;"><strong>Page Size:</strong></td>
<td style="padding: 0pt 5px;">0.19 kb</td>
</tr>
</tbody>
</table>
<p>- Utilizando el factor de simplificación y realizando una simplificación de las geometrías:</p>
<table style="border: 1px solid #cccccc;" border="0">
<tbody>
<tr>
<td style="padding: 0pt 5px;"><strong>URL:</strong></td>
<td style="padding: 0pt 5px;">http://www.gisandchips.org/demos/mapscript/index_simp.php</td>
</tr>
<tr>
<td style="padding: 0pt 5px;"><strong>Load Time:</strong></td>
<td style="padding: 0pt 5px;">1.013 seconds</td>
</tr>
<tr>
<td style="padding: 0pt 5px;"><strong>Page Size:</strong></td>
<td style="padding: 0pt 5px;">0.18 kb</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.gisandchips.org/2009/11/05/aumentar-velocidad-de-carga-de-un-mapfile-utilizando-simplificacion-de-geometrias/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creación de un mapfile de forma dinámica (&#8220;al vuelo&#8221;)</title>
		<link>http://www.gisandchips.org/2009/11/02/creacion-de-un-mapfile-de-forma-dinamica-al-vuelo/</link>
		<comments>http://www.gisandchips.org/2009/11/02/creacion-de-un-mapfile-de-forma-dinamica-al-vuelo/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 10:47:11 +0000</pubDate>
		<dc:creator>pepe</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[mapfile]]></category>
		<category><![CDATA[mapscript]]></category>
		<category><![CDATA[mapserver]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.gisandchips.org/?p=383</guid>
		<description><![CDATA[Este artículo va encaminado a la publicación de cartografía en Internet de forma dinámica, utilizando PHPMapScript. Lo que vamos a intentar conseguir es mostrar en una página web un fichero de mapa sin la necesidad de tener un fichero .map (MapFile) asociado y complejo de mantener, simplemente realizando modificaciones en nuestro código php. Este es [...]]]></description>
			<content:encoded><![CDATA[<p>Este artículo va encaminado a la publicación de cartografía en Internet de forma dinámica, utilizando PHPMapScript.</p>
<p>Lo que vamos a intentar conseguir es mostrar en una página web un fichero de mapa sin la necesidad de tener un fichero .map (MapFile) asociado y complejo de mantener, simplemente realizando modificaciones en nuestro código php.</p>
<p>Este es el resultado que queremos obtener:</p>
<div id="attachment_1085" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1085" title="4b025a29_5fd1_1" src="http://www.gisandchips.org/wp-content/4b025a29_5fd1_1-300x300.gif" alt="Mapa de españa" width="300" height="300" /><p class="wp-caption-text">Mapa de españa</p></div>
<p style="text-align: center">
<p>Vamos a ponernos manos a la obra para conseguirlo.</p>
<p>En primer lugar, doy por supuesto que tenemos instalado MapServer y MapScript en nuestro servidor Linux (en mi caso CentOS)  y el Servidor de Bases de Datos PostgreSQL+PostGIS y con la extensión PHP/pgSQL.</p>
<p>Creamos un fichero .php</p>
<p>Lo primero que debemos hacer es cargar la librería PHPMapScript (<em>php_mapscript.so</em>)</p>
<p><span id="more-383"></span></p>
<pre class="brush: php; title: ; notranslate">

dl('php_mapscript.so');

//Una vez cargada la librería ya se puede trabajar con las funciones propias de PHPMapScript
//Para empezar hay que crear el fichero mapa y definir las diferentes características que queremos que tenga el mapa (nombre, tamaño,

//Creamos un objeto llamado Map mediante el Constructor de MapObject

$Map=ms_newMapObj(&quot;&quot;);

//Le damos un nombre (p.e. mapa)
$Map-&gt;set(&quot;name&quot;,&quot;Mapa&quot;);

//La dimensión del mapa
$Map-&gt;setSize(600,600);

// La extensión del mapa (la podemos obtener de postgresql mediante la función de postgis st_extent
$Map-&gt;setExtent(626679.9375,4191059,815673.125,4519371);

// Se define el path de la imagen la temporal y la real que se mostrarán por web
$Map-&gt;web-&gt;set(&quot;imagepath&quot;,&quot;/tmp&quot;);
$Map-&gt;web-&gt;set(&quot;imageurl&quot;,&quot;/ms_tmp&quot;);

Una vez hemos definido las características de nuestro fichero de mapa, procedemos a incluir capas.
&lt;pre&gt;//Definimos una capa asociada a nuestro fichero de mapa anteriormente definido
// En este caso la primera capa, y que va a servir de fondo de nuestro mapa va a ser wms
// y del servicio wms que proporciona el &lt;a href=&quot;http://www.idee.es/wms/PNOA/PNOA?Request=GetCapabilities&amp;Service=WMS&quot; target=&quot;_blank&quot;&gt;PNOA&lt;/a&gt;&lt;/pre&gt;
$Layer1=ms_newLayerObj($Map);

$Layer1-&gt;set(&quot;name&quot;,&quot;ortofoto&quot;);

//Tipo Raster

$Layer1-&gt;set(&quot;type&quot;,MS_LAYER_RASTER);

$Layer1-&gt;set(&quot;status&quot;,MS_ON);//El status de la Layer, esto nos permitirá definir layers y mantenerlas ocultas dependiendo de las necesidades que tengamos
$Layer1-&gt;setConnectionType(MS_WMS);
$Layer1-&gt;set(&quot;connection&quot;,&quot;http://www.idee.es/wms/PNOA/PNOA?&quot;);
//Definimos la proyección del wms junto con el nombre de la capa wms, la versión del servidor y el formato de la imagen
&lt;pre&gt;//El que esta capa se muestre o no, no depende de nosotros, depende de una fuente externa que proporciona la capa WMS, en este caso es la del PNOA&lt;/pre&gt;
$Layer1-&gt;setProjection(&quot;init=epsg:23030&quot;);
$Layer1-&gt;setMetadata(&quot;wms_name&quot;,&quot;pnoa&quot;);
$Layer1-&gt;setMetadata(&quot;wms_server_version&quot;,&quot;1.1.1&quot;);
$Layer1-&gt;setMetadata(&quot;wms_format&quot;,&quot;image/png&quot;);

//Como segunda capa asociada a nuestro fichero de mapa anteriormente definido vamos a añadir una capa obtenida de nuestros datos en postgresql
$Layer2=ms_newLayerObj($Map);

//Vamos definiendo las características que va a tener esta nuestra primera capa
$name = $Layer2-&gt;set(&quot;name&quot;,&quot;Municipios&quot;);
$type = $Layer2-&gt;set(&quot;type&quot;,MS_LAYER_POLYGON);
$status = $Layer2-&gt;set(&quot;status&quot;,MS_ON);
//Conexión con nuestra base de datos que va as er de tipo POSTGIS
$Layer2-&gt;setConnectionType(MS_POSTGIS);
//Cadena de conexión a la base de datos donde tenemos nuestros datos
$Layer2-&gt;set(&quot;connection&quot;,&quot;user=postgres dbname=demos host=localhost&quot;);
//Filtro en sql que vamos a introducir para sacar nuestros datos a mostrar
// MUY IMPORTANTE es necesario incluir el unique gid y using srid=23030, si no no funcionará
$Layer2-&gt;set(&quot;data&quot;,&quot;geometria from ine.municipios using unique gid using srid=23030&quot; );
//Una vez definida la estructura d ela capa procedemos a definir el estilo de nuestra capa número 1

$clase = ms_newClassObj($Layer2); //Definimos la clase
$estilo = ms_newStyleObj($clase); //El estilo asociado a dicha clase
$estilo-&gt;color-&gt;setRGB(10,150,190); //Los colores
$estilo-&gt;outlinecolor-&gt;setRGB(0,0,0); //El contorno

//Una vez hemos definido las capas tenemos que indicar que se dibuje el mapa
$Image=$Map-&gt;Draw();

//Muy importante que no se nos olviden estas 2 sentencias que vienen a continuación, si no ponemos que se almacene la imagen en el path que le hemos incluido o no la mostramos por pantalla con un echo, no va a mostarse nada, y caeremos en el desanimo ya que después de definir todo correctamente la página aparece en blanco.

$url_imagen=$Image-&gt;saveWebImage();
echo &quot;&lt;img src=&quot;.$url_imagen.&quot;&gt;&quot;;
</pre>
<p>Y después de tener esto, solo hay que lanzar el navegador y et voilà!, tenemos nuestro primer mapfile utilizando PHPMapScript en nuestro navegador, puede que sea un poco lento a la hora de cargar, pero no depende tanto de nuestra capa en PostGIS sino del Servidor WMS que utilicemos como capa de fondo, que ya no depende de nosotros.</p>
<p>El resultado es este: <a href="http://www.gisandchips.org/demos/mapscript/index.php" target="_blank">http://www.gisandchips.org/demos/mapscript/index.php</a></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.gisandchips.org/2009/11/02/creacion-de-un-mapfile-de-forma-dinamica-al-vuelo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

