<?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>geomati.co</title>
	<atom:link href="http://geomati.co/feed/" rel="self" type="application/rss+xml" />
	<link>http://geomati.co</link>
	<description>GIS Freelance Network</description>
	<lastBuildDate>Thu, 04 Apr 2013 16:45:16 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Jornadas SIG Libre Girona 2013</title>
		<link>http://geomati.co/jornadas-sig-libre-girona-2013/</link>
		<comments>http://geomati.co/jornadas-sig-libre-girona-2013/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 08:31:55 +0000</pubDate>
		<dc:creator>Víctor González</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[geoserver]]></category>
		<category><![CDATA[geotools]]></category>
		<category><![CDATA[ggl2]]></category>
		<category><![CDATA[girona]]></category>
		<category><![CDATA[gvsig]]></category>
		<category><![CDATA[jornadas]]></category>
		<category><![CDATA[libre]]></category>
		<category><![CDATA[sig]]></category>
		<category><![CDATA[wms]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=350</guid>
		<description><![CDATA[Un año más, las jornadas de SIG Libre de Girona acaban y volvemos cada uno a nuestra rutina (el que la tenga). Como en cada edición, nos traemos de vuelta muchas cosas interesantes que acabar de digerir. Una de las &#8230; <a href="http://geomati.co/jornadas-sig-libre-girona-2013/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Un año más, las jornadas de SIG Libre de Girona acaban y volvemos cada uno a nuestra rutina (el que la tenga). Como en cada edición, nos traemos de vuelta muchas cosas interesantes que acabar de digerir. Una de las cosas que más tiempo ha ocupado en nuestras conversaciones tal vez haya sido la crítica a las IDEs y los estándares OGC. También, siempre desde nuestro punto de vista, nos ha parecido muy interesante y a la vez debatible la ponencia de CartoDB. Nos llevamos también la impresión de que Quantum GIS se nos acerca cada vez más y puede ser una gran oportunidad. Por último, gvSIG sigue siendo un caso muy particular de muchas cosas, como expuso Jesús M. González Barahona en la ponencia de clausura.</p>
<p>Por nuestra parte tuvimos tres ponencias bastante variadas que intentamos hacer lo más accesibles e interesantes posible. En primer lugar Víctor presentó los últimos avances de GGL2 <a href="#ref1">[1]</a><a href="#ref2">[2]</a>, un tema siempre difícil de transmitir, aun a pesar de que hemos conseguido muy buenos resultados el último año. </p>
<p>Después, Óscar nos enseñó <a href="#ref3">[3]</a><a href="#ref4">[4]</a> que Geoserver tiene una cantidad enorme de funcionalidad que conocemos poco o nada. Nos mostró como simplemente modificando algunos parámetros podíamos obtener una gran variedad de resultados, o como podíamos filtrar mediante el uso de CQL, el uso de WPS dentro de GeoServer&#8230; fue una ponencia muy interesante que da para un post entero sobre el tema.</p>
<p>Para acabar, ya en la recta final de las jornadas, Fernando explicó cuál es nuestra propuesta para conseguir que gvSIG funcione con Geotools <a href="#ref5">[5]</a> y solucionar muchos de los problemas del desarrollo, siempre desde un punto de vista muy personal y basado en nuestra experiencia. Creemos que es una apuesta tan atrevida como prometedora y que el éxito depende en gran medida del apoyo de más desarrolladores que coincidan con nosotros en gran parte de la visión del problema. También, en relación con el tema de las IDEs, Micho dio una entrevista en la que contestaba a muchas de las preguntas que surgen alrededor y que podréis ver en breve.</p>
<p>En otro orden de cosas, es digno de mención el encuentro nacional de Geoinquietos. Por un lado tuvo ese factor común que une a todos los grupos locales: el caos ordenado. Pero también, al hacerlo en la sala de conferencias y con un formato más de ponencia que de reunión o mesa redonda, resultó ser un &#8220;acontecimiento&#8221; un tanto atípico en el que Micho fue el encargado de presentar Geoinquietos Norte y Fernando ganó la votación del diseño del logo para Geoinquietos Valencia. O eso cree él, está por ver. Es verdad que para los propios Geoinquietos fue menos productivo de lo que esperábamos, pero confiamos en que por otro lado sirviera para que la gente se formara una idea más clara de lo que es Geoinquietos y se anime a unirse.</p>
<p>En resumen, una vez más fueron unas jornadas bastante productivas que tenemos que agradecer a Lluís, Núria, Gemma, todo el equipo del Sigte y la Universitat de Girona. Nos volvemos cansados pero muy contentos de haber vuelto a ver a muchos compañeros y amigos, con las pilas cargadas para seguir trabajando y con muchas ganas de volver el año que viene. A ver si de una vez conseguimos solucionar todos los geoproblemas del mundo y nos hacemos millonarios en el camino.</p>
<p><a name="ref1"></a> [1] <a href="http://www.slideshare.net/geomati_co/slides-gironaggl2">Avances en la integración de GGL2 con gvSIG y Quantum GIS (Slides)</a><br />
<a name="ref2"></a> [2] <a href="http://www.slideshare.net/geomati_co/paper-avances-en-la-integracin-de-ggl2-con-gvsig-y-quantum-gis-17156640">Avances en la integración de GGL2 con gvSIG y Quantum GIS (Paper) </a><br />
<a name="ref3"></a> [3] <a href="http://www.slideshare.net/geomati_co/slides-gironageo-server-17064139">Geoserver, más allá de un servidor WMS (Slides)</a><br />
<a name="ref4"></a> [4] <a href="http://www.slideshare.net/geomati_co/geoserver-paper">Geoserver, más allá de un servidor WMS (Paper) </a><br />
<a name="ref6"></a> [5] <a href="http://www.slideshare.net/geomati_co/paper-integracin-de-geotools-en-gvsig-ce-17156579">Integración de GeoTools en gvSIG CE (Paper) </a></p>
<p>P.D: En el aspecto culinario también queremos destacar que este año descubrimos la deliciosa <em>botifarra de paté d&#8217;ànec</em> (longaniza de paté de pato). Muy recomendable. También descubrimos el restaurante &#8220;La Placeta&#8221;. Nunca habíamos visto tanto empeño y buena voluntad para conseguir un servicio que, dicho en palabras de Micho, &#8220;no compilara&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/jornadas-sig-libre-girona-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrating Geotools into gvSIG CE (II)</title>
		<link>http://geomati.co/integrating-geotools-into-gvsig-ce-ii/</link>
		<comments>http://geomati.co/integrating-geotools-into-gvsig-ce-ii/#comments</comments>
		<pubDate>Wed, 24 Oct 2012 12:26:11 +0000</pubDate>
		<dc:creator>fergonco</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=292</guid>
		<description><![CDATA[The gvSIG CE codesprint took place last week in Munich. Víctor and I had a great time working with all the people there, specially with Ben and Fran, the other developers. Although we couldn&#8217;t devote as much time as we &#8230; <a href="http://geomati.co/integrating-geotools-into-gvsig-ce-ii/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The gvSIG CE codesprint took place last week in Munich. Víctor and I had a great time working with all the people there, specially with Ben and Fran, the other developers.</p>
<p>Although we couldn&#8217;t devote as much time as we wanted on the Geotools integration, some progress was done on the technical side and lots of things were discussed. The most important conclusions I took during the week are:<span id="more-292"></span></p>
<ul>
<li>We need to investigate further on the cost of making the integration. We produced a TODO list that must be explored further before having an accurate idea of the cost. It can be seen at the end of this post.</li>
<li>Creating an adapter layer from current gvSIG API to new Geotools based one would reduce the incompatibilities with existing extensions. However, creating and maintaining such adapter is quite expensive and was one of the things that slowed me most during the codesprint. As Fran suggested, it would be cool to have a migration guide from old API to new one, but backwards compatibility at the development level is not considered from now on.</li>
<li>There is the will to collaborate between people from the two forks. From the next CE version, we&#8217;ll share NavTable and OpenCADTools will also be integrated. Hopefully, the collaboration around these projects will be only the beginning of a more tight collaboration.</li>
</ul>
<p>In the same branch we worked on the Geotools integration we did some other tasks that also improve the development experience, which we consider very important.</p>
<p>One of these tasks is the Maven management: we are adding Maven support to all gvSIG projects. With this improvement it is not necessary to care about transitive dependencies anymore and, since these dependencies are automatically managed by Maven, and it is neither necessary to keep them in the repository. Thus, not only we obtain a much cleaner way of managing the dependencies and the configuration of the Eclipse projects but also we remove one of the most heavy set of files in the repository. However, the Maven management is not completely done: it is still necessary to configure Maven in order to generate the plugins and artifacts necessary to build a complete gvSIG distribution.</p>
<p>Another important task is the cleanup work: we removed a lot of unused features, dead code, extensions and more. Also, we formatted the code and organized imports of all Java files in order to have a much more readable source code with less warnings (indeed, I get confused whenever I have more than 15.000 warnings, I know, I get older). What we obtain with these improvements is, on one hand, to remove useless code that cannot realistically be maintained by the gvSIG CE team and, on the other hand, to obtain a much clearer source code. In order to quantify the weight lost with these changes, we have checked the number of source code lines in .xml and .java files, as well as the total MB size in the <em>applications</em>, <em>extensions</em>, <em>frameworks</em> and <em>libraries</em> folders:</p>
<p>Before Code Sprint</p>
<ul>
<li>153.113 lines in .xml files.</li>
<li>1.313.508 lines in .java files.</li>
<li>543MB in all files.</li>
</ul>
<p>After the Code Sprint</p>
<ul>
<li>149.179 lines in .xml files.</li>
<li>1.181.750 lines in .java files.</li>
<li>303MB in all files.</li>
</ul>
<p>So, in percentages, we managed to reduce the following amounts:</p>
<ul>
<li>2.57% in .xml files.</li>
<li>10.03% in .java files.</li>
<li>44.20% in total MB.</li>
</ul>
<p>Next steps will be to go on estimating the cost of GeoTools integration. I plan to dedicate two or three days before the end of the month to the TODO list to gain a greater visibility on what&#8217;s to be done. Then, hopefully we&#8217;ll have enough information to take some decisions.</p>
<p>As for the aforementioned TODO list, we&#8217;ve identified the following tasks:</p>
<p><strong>1.- Replace the adapter layer for DataStores.</strong><br />
This involves removing the adapters completely. We thought about creating an adapter layer to adapt the calls to old gvSIG adapter layer to the new GeoTools based one but we found some problems:</p>
<ul>
<li>The layer is very big, it should involve reading as well as writing operations.</li>
<li>The layer has random access to the features while geotools has only sequential access.</li>
</ul>
<p>We have decided that investing in this layer it is not worth. We prefer to remove completely old API and adapt the extensions. This will lead to incompatibility with extensions maintained for Association gvSIG but in the case of NavTable and OpenCADTools it seems like there is some interest in decoupling the data access layer so that 95% of the code is compatible.</p>
<p>- There are many points were the instance of the adapter is checked. This can be implemented by methods at the FLayer level (isFile, isDB, etc.). The layer gets the information from the DataStore or at construction time.<br />
- Remove the adapters and see how many compile errors we get. We can compare it with the many errors we got with the CRS replacing where we got hundreds of errors and it only took 30 hours to compile it back (there is pending effort there).<br />
- Adapt selection to DataStores (http://docs.geotools.org/latest/userguide/library/main/filter.html#handling-selection)<br />
- Edition. Good point. Research on GT necessary here.<br />
- Intelligent usage of DataStores. They are heavy objects. They should be cached, shared between layers and closed when not used anymore (or when not used for some time). SourceManager in libFMap is a very primitive implementation of this.<br />
- FLyrWFS could be just a FLyrVect with a WFS DataStore on it.</p>
<p><strong>2.- Remove libDriverManager, remove writers, remove GDBMS.</strong><br />
We should remove all these projects and see how many compile errors we get. We can compare it with the many errors we got with the CRS replacing where we got hundreds of errors and it only took 30 hours to compile it back (there is pending effort there).</p>
<p>- It is still necessary to show the user a list of available DB connectors, file formats with writing capabilities, etc. So in place of the drivers a &#8220;Source&#8221; abstraction must be built.<br />
- To connect to databases it is necessary to create connections, to query all the available tables, etc. Not sure if this can be done with GT. It is necessary to check. If it is not possible maybe a specialization of Source called DBSouce should be built to manage that.</p>
<p><strong>3.- Remove all raster stuff under FLyrRaster.</strong><br />
- Analogous to the adapter layer removal.</p>
<p><strong>4.- Make layers become structured data object holders.</strong><br />
They don&#8217;t hold any functionality related with data. They will just provide a DataStore, a GridCoverage, a Geotools WMS client, etc. and the name of the layer, the relation with the other layers (parent, sibling, etc.)</p>
<p>- There is no need for most of FLyrVect subclasses since the difference between file and db is at the DataStore level. As holders of DataStore, a file based layer is exactly equal to a holder of a database. So VectorialDBLayer, VectorialFileLayer, etc. should be removed.<br />
- Some subclases just add some functionality, like VoronoiAndTinInputLyr. This can be implemented like an adapter system in Eclipse EMF generated classes and can be easier for persistence than subclassing.</p>
<p><strong>5.- Include OGR DataStores: OGR providers available as GT DataStores.</strong></p>
<p><strong>6.- Include image-io-ext providers: GDAL providers available as GT GridCoverages.</strong></p>
<p><strong>7.- Mavenization of build.</strong><br />
- We can take advantage of the efforts done in 2.0<br />
- It will allow to run tests easily, produce coverage reports, sonar reports, keep<br />
dependencies out of the SVN repository (faster checkouts and commits), put in place<br />
an integration server, etc.</p>
<p><strong>8.- Tests (lots of)</strong><br />
- Even if it is not the perfect indicator, we should produce a coverage report in order to motivate people to add tests.<br />
- We could allow any refactoring (in the strict meaning of the word) that extracts some functionality and covers it with tests. Even if something breaks, it&#8217;s better in the long term.</p>
<p><strong>9.- Persistence through extensible schemas.</strong><br />
- Create a extensible schema.<br />
- Keep the methods that reads old projects and adapt to the new changes. Add an option &#8220;Import old project&#8221; that calls these methods.</p>
<p><strong>10.- Recover WMS Dimension support (lost after Fran&#8217;s WMS refactoring)</strong></p>
<p><strong>11.- Data access abstraction layer for OpenCADTools and NavTable</strong></p>
<p><strong>12.- Andami simplification</strong><br />
- Make all plugins work under the same classloader -&gt; Faster startup time.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/integrating-geotools-into-gvsig-ce-ii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Integrating Geotools into gvSIG CE</title>
		<link>http://geomati.co/integrating-geotools-into-gvsig-ce/</link>
		<comments>http://geomati.co/integrating-geotools-into-gvsig-ce/#comments</comments>
		<pubDate>Wed, 03 Oct 2012 10:17:11 +0000</pubDate>
		<dc:creator>Víctor González</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=259</guid>
		<description><![CDATA[After some work, we have managed to replace the gvSIG CRS module for Geotools. Here we are going to discuss what we have done, the cost of the task in hours, what we have achieved and some issues that have &#8230; <a href="http://geomati.co/integrating-geotools-into-gvsig-ce/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After some work, we have managed to replace the gvSIG CRS module for Geotools. Here we are going to discuss what we have done, the cost of the task in hours, what we have achieved and some issues that have arisen.</p>
<p>First of all, we have to say that the result is quite satisfactory. Except for a couple of cases that we will discuss later, all the functionality has been migrated successfully. Basically, we have done a two-step task: first, replace the existing references to previous versions of Geotools with the current version (Geotools 8.0) and then replace the gvSIG projection library with Geotools.</p>
<p>The first step involves the replacement of existing code that uses previous versions of Geotools with new code that uses the 8.0 version. Thus, we have replaced not only old jars but also classes in the repository that were copies of the Geotools code. An example of the latter is the <em>org.geotools.referencefork</em> package on <em>libTopology</em>. These changes can be reviewed in the SVN repository <a href="#ref1">[1]</a><a href="#ref1">[2]</a>.</p>
<p>Then, the tricky part is to replace the gvSIG projection API with the Geotools one. This can be better viewed in the following diagrams that show the before and after status. Note that the red gvSIG element stands for every place in the gvSIG code that uses projections:</p>
<div id="attachment_260" class="wp-caption aligncenter" style="width: 1851px"><a href="http://geomati.co/wp-content/uploads/2012/10/projections-class-diagram.png"><img class=" wp-image-260" title="projections-class-diagram" src="http://geomati.co/wp-content/uploads/2012/10/projections-class-diagram.png" alt="" width="1841" height="862" /></a><p class="wp-caption-text">gvSIG projections before Geotools integration</p></div>
<div id="attachment_261" class="wp-caption aligncenter" style="width: 2606px"><a href="http://geomati.co/wp-content/uploads/2012/10/projections-class-diagram-gt.png"><img class="size-full wp-image-261" title="projections-class-diagram-gt" src="http://geomati.co/wp-content/uploads/2012/10/projections-class-diagram-gt.png" alt="" width="2596" height="647" /></a><p class="wp-caption-text">gvSIG projections after Geotools integration</p></div>
<p style="text-align: left;">Basically, we replace the following interfaces:</p>
<ul>
<li>IProjection (gvSIG) -&gt; CoordinateReferenceSystem (Geotools)</li>
<li>ICoordTrans (gvSIG) -&gt; MathTransform (Geotools)</li>
</ul>
<p>and we get rid of all the custom CRS, CRS factories and everything related with implementations since Geotools already provides us that. Also, in order<br />
to make the change as smooth as possible, a <em>ProjectionUtils</em> class has been created to delegate some tasks on Geotools and perform some other tasks that were responsibility of gvSIG CRS related interfaces but don&#8217;t exist in Geotools replacements. It&#8217;s a kind of adapter from the previous gvSIG API to the new Geotools one. In some cases<br />
this adaptation is direct and <em>ProjectionUtils</em> simply manages an exception (for example, the <em>getCRS</em> method), but in other cases it performs a bit more complicated task (for example, the <em>transform</em> method). In any case, it is desirable that this class will eventually disappear for a full adaptation of the gvSIG code to the Geotools API. Finally, the <em>libJCRS</em> and <em>extJCRS</em> projects are excluded from build since we don&#8217;t need them anymore. These changes can be reviewed in the SVN repository <a href="#ref3">[3]</a><a href="#ref4">[4]</a>.</p>
<p>After all this work, we have obtained a gvSIG version that performs projections using Geotools and we have removed almost three projects (<em>extJCRS</em> and <em>libJCRS</em> completely and most of <em>libProjection</em> classes), so the gvSIG team has less code to mantain. However, while replacing the projection support, some functionaly has been lost. As a result, some topology processes related with referencing and the Voronoi diagram may not work properly. Also, specifying the map scale manually may not work as expected. Lastly, by excluding the <em>extJCRS</em> extension, the panel for projection selection has been replaced with a previous version, less intuitive. These are the main issues that have arisen, but there are more little technical details that can be reviewed in the gvSIG CE code sprint wiki <a href="#ref5">[5]</a>.</p>
<p>Regarding the cost of the task, it is important to notice that some tasks are still to be done, as explained previously. Also, by performing these changes, it is expected that some bugs would have been introduced, so the cost we present here does not take the technical debt into account and it will not be surprising that it doubles the cost of the already done work. Having considered all that aspects, the cost of the task performed so far is around 30 hours.</p>
<p>Finally, it is important to consider what the future tasks should be: what remains to be done and how to do it. In our case, the first task is to identify introduced bugs with unit tests, solve them and, if possible, remove the <em>ProjectionUtils</em> class to have a full adaptation to the Geotools API. Then, we should introduce Geotools in the data access layer of gvSIG and get rid of the drivers/adapters system, one of the most obscure parts in gvSIG. In order to do so, we should use directly the Geotools data stores from the layer classes (<em>FLayer</em>, <em>FLyrVect</em>, &#8230;). Thus, we can transform the current gvSIG data access layer:</p>
<div id="attachment_262" class="wp-caption aligncenter" style="width: 2488px"><a href="http://geomati.co/wp-content/uploads/2012/10/class-diagram.png"><img class="size-full wp-image-262" title="class-diagram" src="http://geomati.co/wp-content/uploads/2012/10/class-diagram.png" alt="" width="2478" height="996" /></a><p class="wp-caption-text">gvSIG data access</p></div>
<p>into a much more simple layer:</p>
<div id="attachment_263" class="wp-caption aligncenter" style="width: 1192px"><a href="http://geomati.co/wp-content/uploads/2012/10/class-diagram-gt.png"><img class="size-full wp-image-263" title="class-diagram-gt" src="http://geomati.co/wp-content/uploads/2012/10/class-diagram-gt.png" alt="" width="1182" height="728" /></a><p class="wp-caption-text">gvSIG data access with Geotools</p></div>
<p>A rough test has been made in this direction and the result can be seen in the following video. We use a toolbar button to add a new layer that uses Geotools in order to read a shapefile (specified by code, just for test purposes):</p>
<p><a href="http://geomati.co/wp-content/uploads/2012/10/gvsigce-geotools.avi">gvSIG vector layer with Geotools</a></p>
<p>However, this new <em>FlyrVect</em> with Geotools does not have a <em>ReadableVectorial</em> implementation since it uses a Geotools data store directly. A solution is to remove the <em>getSource</em> method from <em>FLyrVect</em>, but then all the extensions that implement custom drivers or use the <em>ReadableVectorial</em> directly will be broken. Thus, the backward compatible option consists in implementing an adapter for <em>ReadableVectorial</em> (and every other interface that gets obsolete in the layer classes API) that delegates in Geotools directly.</p>
<p>Moreover, there are a few tasks that, despite not being strictly necessary, are very interesting and should be considered. First, it is also possible to replace the gvSIG implementation for rendering and symbology. The advantages of this change is that all symbology code will be replaced with Geotools. Another feasible option for Geotools integration is the query syntax. gvSIG provides several different syntaxes to query data so it could be possible to replace all these syntaxes with the Geotools implementation. Regarding the processing framework, it could be also interesting to analyze the current status of gvSIG and determine the benefits of using the Geotools framework. Finally, there are OGR data stores available in Geotools that can be used in order to get access to a great amount of formats <a href="#ref6">[6]</a>.</p>
<p>In conclusion, we hope that the work we have done gives a better perspective of the Geotools integration in gvSIG, how it can be performed, what we can and cannot do in the next gvSIG CE code sprint in Munich <a href="#ref7">[7]</a> as well as some hints on what will be the cost of the full integration.</p>
<p><a name="ref1"></a>[1] <a href="http://gvsigce.svn.sourceforge.net/viewvc/gvsigce?view=revision&amp;revision=701">SVN revision 701</a><br />
<a name="ref2"></a>[2] <a href="http://gvsigce.svn.sourceforge.net/viewvc/gvsigce?view=revision&amp;revision=702">SVN revision 702</a><br />
<a name="ref3"></a>[3] <a href="http://gvsigce.svn.sourceforge.net/viewvc/gvsigce?view=revision&amp;revision=703">SVN revision 703</a><br />
<a name="ref4"></a>[4] <a href="http://gvsigce.svn.sourceforge.net/viewvc/gvsigce?view=revision&amp;revision=704">SVN revision 704</a><br />
<a name="ref5"></a>[5] <a href="http://gvsigce.sourceforge.net/wiki/index.php/Geotools_in_gvSIG_CE">Geotools in gvSIG CE</a><br />
<a name="ref6"></a>[6] <a href="http://www.gdal.org/ogr/ogr_formats.html">OGR Vector Formats</a><br />
<a name="ref7"></a>[7] <a href="http://gvsigce.sourceforge.net/wiki/index.php/GvSIG_CE_Code_Sprint_in_Munich">gvSIG CE Code Sprint in Munich</a></p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/integrating-geotools-into-gvsig-ce/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://geomati.co/wp-content/uploads/2012/10/gvsigce-geotools.avi" length="897926" type="video/avi" />
		</item>
		<item>
		<title>Internacionalizando con jQuery.i18n e Internet Explorer</title>
		<link>http://geomati.co/internacionalizando-con-jquery-i18n-e-internet-explorer/</link>
		<comments>http://geomati.co/internacionalizando-con-jquery-i18n-e-internet-explorer/#comments</comments>
		<pubDate>Wed, 05 Sep 2012 11:55:35 +0000</pubDate>
		<dc:creator>Micho García</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery.i18n]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=251</guid>
		<description><![CDATA[Imagino que con un título de entrada así uno ya se imagina por donde van a ir los tiros del post. Actualmente estamos envueltos en la vorágine de cierre de proyecto, acercándonos a ese primer &#8220;ultimo commit&#8221;, con un proyecto &#8230; <a href="http://geomati.co/internacionalizando-con-jquery-i18n-e-internet-explorer/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Imagino que con un título de entrada así uno ya se imagina por donde van a ir los tiros del post. </p>
<p>Actualmente estamos envueltos en la vorágine de cierre de proyecto, acercándonos a ese primer &#8220;ultimo commit&#8221;, con un proyecto en el que estamos desarrollando un visor para explotar recursos turísticos. Una de los requisitos es que la interfaz estuviese en dos idiomas: inglés y español. Como siempre, antes de empezar a reinventar la rueda, miramos que era lo que podíamos reutilizar y encontramos <a href="http://code.google.com/p/jquery-i18n-properties/" title="jQuery i18n en Google Code" target="_blank">jQuery.i18n</a> un plugin de jQuery que nos permite trabajar con archivos <em>.properties</em> al modo de Java, algo a lo que estamos acostumbrados. Después de revisar el plugin y leer las posibles <a href="http://code.google.com/p/jquery-i18n-properties/#Known_issues" title="Known Issues" target="_blank">&#8220;Known Issues&#8221;</a> vemos que puede encajar en nuestra aplicación.</p>
<p>La instalación es sencilla, el uso es muy dinámico, nos permite cambiar el idioma de la aplicación mediante llamadas Ajax que no necesitan recargar el sitio web y el manejo de los idiomas y ficheros es ágil y no implica tener que tocar nada de nuestros objetos, así que, Voila!!, funcionando en Google Chrome, en Firefox y&#8230; oh wait!!, ¡no va en Internet Explorer(IE)!, maldita sea, <a href="http://www.youtube.com/watch?v=z0aPwOoR8HU" title="Traigan a Bill Gates" target="_blank">¡traigan a Bill Gates!</a>. </p>
<p>Buceando en la red no veo que haya dado problemas con IE. En principio con no poner los IDes de los objetos HTML con el mismo valor que las claves en los archivos <em>.properties</em> parece que no haya nada más detectado. El depurador de IE me lanza el error en la linea:</p>
<p><code>eval(parsed);</code></p>
<p>Sin embargo la función <code>eval</code> si está en las <a href="http://msdn.microsoft.com/en-us/library/2z6exc9e.aspx" title="JScript version information" target="_blank">especificaciones</a> del navegador. Por lo que tiene pinta de ser algo que le pasamos en <code>parsed</code>. Depurando esta llamada veo que el problema viene de una de las claves que estoy usando en los archivos <em>.properties</em>:</p>
<p><code>close = Cerrar</code></p>
<p>IE al ejecutar <code>eval</code> entiende <code>close</code> como la función y es hay donde genera el error, tan fácil de solucionar como:</p>
<p><code>s_close = Cerrar </code></p>
<p><strong>Así que recordad, no uséis como claves en los archivos <em>.properties</em> palabras reservadas, que hay mucho navegador quisquilloso por ahí.</strong></p>
<p>Saludos.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/internacionalizando-con-jquery-i18n-e-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GGL2 API for Java and Python</title>
		<link>http://geomati.co/ggl2-api-for-java-and-python/</link>
		<comments>http://geomati.co/ggl2-api-for-java-and-python/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 10:56:43 +0000</pubDate>
		<dc:creator>fergonco</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=239</guid>
		<description><![CDATA[We are pleased to announce that the GGL2 tools are increasing constantly. The newcomer today is an API for Java and Python. This API allows developers to execute GGL2 processes from their programs with a single call, passing the GGL2 &#8230; <a href="http://geomati.co/ggl2-api-for-java-and-python/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We are pleased to announce that the GGL2 tools are increasing constantly. The newcomer today is an API for Java and Python.<span id="more-239"></span></p>
<p>This API allows developers to execute GGL2 processes from their programs with a single call, passing the GGL2 code as a parameter. Thus, Java and Python developers can now run GGL2 algorithms using their own language easily.</p>
<p>In order to use this API, GGL2 must be installed and the installation directory specified before executing GGL2 code. Then, the execute call will run the GGL2 code and will return normally if the process finishes successfully or will throw an exception if anything fails. Different exceptions will be thrown depending on whether the error has been a GGL2 compilation error, a GGL2 execution error or any other unexpected error.</p>
<p>For Java developers, the GGL2 API is available with and without Maven. In the end, the necessary jars must be included in the classpath and then a simple program like this example can be executed:</p>
<pre>import org.gearscape.ggl.GGL2;

public class Main {

    public static void main(String[] args) throws Exception {

        GGL2 ggl2 = new GGL2("/home/victorzinho/bin/ggl");

        ggl2.execute("show 'Hello World!';");

    }

}</pre>
<p>For Python developers the module containing the GGL2 API must be imported. The previous example can be executed as follows:</p>
<pre>import GGL2

GGL2.location = '/home/user/bin/ggl'
GGL2.execute("show 'Hello World!';")</pre>
<p>There is a complete tutorial on how to configure and use the API with both Java and Python in [1].</p>
<p>&#8212;&#8211;</p>
<p>[1] http://www.gearscape.org/html/ggl2/ref/apis.html</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/ggl2-api-for-java-and-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@geomati_co in GeoTools</title>
		<link>http://geomati.co/geomati_co-in-geotools/</link>
		<comments>http://geomati.co/geomati_co-in-geotools/#comments</comments>
		<pubDate>Wed, 04 Jul 2012 21:23:19 +0000</pubDate>
		<dc:creator>Micho García</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[geomatico]]></category>
		<category><![CDATA[geoserver]]></category>
		<category><![CDATA[geotools]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=223</guid>
		<description><![CDATA[On these days the geomati.cos are a bit scattered. They had to stop in Velp (Holland) to talk about some projects at the MapWindow Conference. After this, one of them has gone to Salzburg (Austria) to continue with talks in &#8230; <a href="http://geomati.co/geomati_co-in-geotools/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On these days the geomati.cos are a bit scattered. They had to stop in <a title="Velp in OSM" href="http://www.openstreetmap.org/?lat=51.9959&amp;lon=5.975&amp;zoom=14&amp;layers=M" target="_blank">Velp (Holland)</a> to talk about some projects at the <a title="MapWindow Conference" href="http://www.mapwindow.org/conference/2012/" target="_blank">MapWindow Conference</a>. After this, one of them has gone to <a title="Salzburg in OSM" href="http://www.openstreetmap.org/?lat=47.8002&amp;lon=13.0411&amp;zoom=14&amp;layers=M" target="_blank">Salzburg (Austria)</a> to continue with talks in the <a title="AGIT Conference" href="http://www.agit.at/" target="_blank">AGIT Conference</a>, and others are already on their new temporary destination, <a title="Rome in OSM" href="http://www.openstreetmap.org/?lat=41.8927&amp;lon=12.4865&amp;zoom=14&amp;layers=M" target="_blank">Rome (Italy)</a>, working for FAO.<br />
In between we have learned about <a title="OpenGeoGroep" href="http://www.opengeogroep.nl/ogg/" target="_blank">OpenGeoGroep</a>, a GIS freelancers cooperative, more or less what we&#8217;d want to become one day. Meanwhile we continue to work on our projects and are preparing others.<br />
Just one more thing. Recently one of the geomaticos, Oscar Fonts, contributed to GeoServer and GeoTools a new transformation method using NADCON and NTv2 grids (<a title="GeoServer &amp; GeoTools" href="http://geomati.co/geoserver-datum/" target="_blank">see here in Spanish</a>). Today people from GeoTools has <a title="GeoTools on GitHub" href="http://geotoolsnews.blogspot.com.es/2012/07/geotools-on-github.html" target="_blank">posted on their blog</a> that its source code has moved to GitHub, and int the image that appears&#8230;</p>
<p><a href="http://geotoolsnews.blogspot.com.es/2012/07/geotools-on-github.html"><img class="aligncenter" title="GeoTools on GitHub" src="http://3.bp.blogspot.com/-dRWFedATbD8/T_OtvAbfCdI/AAAAAAAAAt0/4iD5buXC1Og/s1600/GeoToolsNetworkGraph.png" alt="" width="556" height="406" /></a>Sorry, I&#8217;m a sentimentalist.</p>
<p>Ciao.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/geomati_co-in-geotools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New GGL2 plugin for Qgis</title>
		<link>http://geomati.co/new-ggl2-plugin-for-qgis/</link>
		<comments>http://geomati.co/new-ggl2-plugin-for-qgis/#comments</comments>
		<pubDate>Wed, 04 Jul 2012 13:19:54 +0000</pubDate>
		<dc:creator>fergonco</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[ggl2]]></category>
		<category><![CDATA[qgis]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=212</guid>
		<description><![CDATA[A new GGL2 plugin for Qgis has been released. This plugin allows users to connect the GGL2 environment with Qgis so layers can be used as data within GGL2 code and results can be visualized back in Qgis. In order to use &#8230; <a href="http://geomati.co/new-ggl2-plugin-for-qgis/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.gearscape.org/index.php/downloads" target="_blank">new GGL2 plugin for Qgis</a> has been released. This plugin allows users to connect the GGL2 environment with Qgis so layers can be used as data within GGL2 code and results can be visualized back in Qgis.</p>
<p><span id="more-212"></span></p>
<p>In order to use Qgis layers, simply use the <em>qgis_</em> prefix followed by the name of the layer in Qgis. In GGL2, this will show the number of roads of the Qgis layer <em>roads</em>:</p>
<blockquote>
<div><span style="font-family: courier new,monospace;">show qgis_roads/@length;</span></div>
</blockquote>
<p>&nbsp;</p>
<p>On the other hand, it is possible to export the results into Qgis selecting it as the default GIS in the GGL2 environment and using the <em>show in gis </em>instruction. For example, we can show the buffer of the <em>roads</em> layer using GGL2 with the following program:</p>
<blockquote>
<div><span style="font-family: courier new,monospace;">import ggl.geom;</span></div>
<div><span style="font-family: courier new,monospace;">import ggl.shp;</span></div>
<div><span style="font-family: courier new,monospace;">show qgis_roads select(r | ST_Buffer(r/the_geom, 10)) in gis as SHP &#8216;buffer&#8217;;</span></div>
</blockquote>
<p>&nbsp;</p>
<p>There is more information on <a href="http://www.gearscape.org/html/ggl2/tutorials/gis_interaction.html" target="_blank">how to configure the default GIS and how the GIS interaction works</a> on the documentation site.</p>
<p>Regarding the user interface and the configuration of the plugin, the behavior is very similar to the already available plugin in gvSIG. It is possible to connect/disconnect the plugin from a toolbar button and there is a menu in <em>Plugins -&gt; GGL2</em> to configure the port used to connect to GGL2.</p>
<p>One of the most important advantages of this plugin is that Qgis is now added to the set of available GIS applications from GGL2, together with gvSIG. Thus, users can share data betweeen applications easily. For example, it is possible to segment roads from a gvSIG layer with regions from a Qgis layer and show the results in our default GIS application:</p>
<blockquote>
<div><span style="font-family: courier new,monospace;">import ggl.shp;</span></div>
<div><span style="font-family: courier new,monospace;">import ggl.geom;</span></div>
<div><span style="font-family: courier new,monospace;"><br />
</span></div>
<div><span style="font-family: courier new,monospace;">roads_region = gvsig_roads join qgis_regions(o, e |</span></div>
</blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<div><span style="font-family: courier new,monospace;">on ST_Intersects(e/the_geom, o/the_geom)</span></div>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<div><span style="font-family: courier new,monospace;">include geom_region=e/the_geom, municipio=e/nombre);</span></div>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<blockquote>
<div><span style="font-family: courier new,monospace;">segments = roads_region select (r | the_geom=ST_Intersection(r/<wbr>geom_region, r/the_geom),</wbr></span></div>
</blockquote>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<div><span style="font-family: courier new,monospace;">all except r/geom_region, r/the_geom);</span></div>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<blockquote>
<div><span style="font-family: courier new,monospace;">show segments in gis as SHP &#8216;segments&#8217;;</span></div>
</blockquote>
<p>&nbsp;</p>
<p>This plugin opens the Qgis world to all the GGL2 users and also brings GGL2 closer to the Qgis users. However, the Qgis plugin is still an ongoing development and may suffer some bug corrections as well as some improvements such as a GGL2 console in order to execute GGL2 code directly from Qgis.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/new-ggl2-plugin-for-qgis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@ikiMap y la edición vectorial en Android</title>
		<link>http://geomati.co/ikimap-y-la-edicion-vectorial-en-android/</link>
		<comments>http://geomati.co/ikimap-y-la-edicion-vectorial-en-android/#comments</comments>
		<pubDate>Tue, 03 Jul 2012 09:46:42 +0000</pubDate>
		<dc:creator>Micho García</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[edición]]></category>
		<category><![CDATA[ikimap]]></category>
		<category><![CDATA[vectorial]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=167</guid>
		<description><![CDATA[ikiMap, comparte tus mapas, es un portal desarrollado para el intercambio de información geográfica. Es algo similar a lo que hace Youtube pero con nuestra información geográfica. Si no lo conoces te recomiendo que lo visites. Sixtema, la empresa que &#8230; <a href="http://geomati.co/ikimap-y-la-edicion-vectorial-en-android/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="ikiMap" href="http://www.ikimap.com/" target="_blank">ikiMap</a>, comparte tus mapas, es un portal desarrollado para el intercambio de información geográfica. Es algo similar a lo que hace Youtube pero con nuestra información geográfica. Si no lo conoces te recomiendo que lo visites. <a title="Sixtema" href="http://sixtema.es/" target="_blank">Sixtema</a>, la empresa que desarrolla ikiMap nos planteó la creación de la versión para Android de la plataforma, y eso hicimos. Una vez tuvimos los requisitos en mano, comenzamos a valorar las diferentes posibilidades que existían ya desarrolladas en las que apoyarnos. Dentro de todas las necesidades del proyecto, respecto a la parte geográfica estaban:</p>
<ul>
<li>Manejo de diferentes proveedores de cartografía</li>
<li>Manejo de formato KML con simbología propia</li>
<li>Desarrollo de procesos de edición</li>
</ul>
<p>Valoramos los diferentes proyectos de software libre que existían en ese momento tales como <a title="osmdroid" href="http://code.google.com/p/osmdroid/" target="_blank">osmdroid</a>, <a title="mapsforge" href="http://code.google.com/p/mapsforge/" target="_blank">mapsforge</a> o <a title="gvSIG Mini" href="https://confluence.prodevelop.es/display/GVMN/Home;jsessionid=8D7270351ECE1487F0D4B1ADFE6243F8" target="_blank">gvSIG Mini</a>. Todos son proyectos muy interesantes que permiten el desarrollo de aplicaciones con mapas para Android. Nosotros nos decidimos por gvSIG Mini. Este último nos permitía:</p>
<ul>
<li>Manejo de diferentes proveedores de cartografía mediante la librería TileRaster, mediante la cual podemos incorporar sencillamente los nuevos proveedores de datos</li>
<li>Capacidades de manejo de información vectorial mediante las librerías GPE</li>
<li>Gracias a una refactorización que llevamos a cabo preparabamos gvSIG Mini para la incorporación de controles de edición vectorial</li>
</ul>
<p>Además, el tener relación con los desarrolladores de gvSIG Mini, en principio nos daba un apoyo, que a lo largo del proyecto se demostró de mucha utilidad.<br />
Así que decidido que apoyaríamos nuestro desarrollo en el proyecto gvSIG Mini nos metimos en harina.</p>
<p>La primera fase del proyecto estuvo orientada a implementar la parte más social de la plataforma. Desarrollada completamente utilizando las librerías proporcionadas por la plataforma Android, tuvimos que enfrentarnos a la gestión de Intents, creación de Parcelables para el manejo de información entre actividades, peculiaridad del sistema Android, y el control de Broadcast para la detección de cambios en el estado del sistema. Sin muchos problemas, conseguimos sacar adelante esta fase.</p>
<p>En una segunda fase nos adentramos en el desarrollo de las capacidades geográficas de la aplicación. Las tareas a las que nos enfrentamos fueron:</p>
<ul>
<ul>
<li>Integración de la vista de gvSIG Mini en nuestro desarrollo</li>
<li>Gestión de las diferentes capas base requeridas</li>
<li>Manejo de la posición actual del terminal</li>
<li>Gestión de la diferente simbología de la plataforma ikiMap</li>
<li>Procesos de creación y edición de geometrías en el terminal</li>
</ul>
</ul>
<p>Así que lo primero fue extraer la vista principal, el MapView, e incorporarla a nuestra aplicación. Tras el proceso de refactorización la MapView estaba preparada para poder ser utilizada como un componente dentro del desarrollo. En principio no debía ser algo que generase muchos problemas aunque a lo largo del desarrollo surgieron algunos que comentaremos más adelante.<br />
Para la incorporación de las diferentes capas base, encontramos que parte de las que necesitábamos no se encontraban dentro de las aportadas por la librería TileRaster. Esta librería se configura mediante la edición de un archivo de texto donde se incluyen los parametros necesarios para la capa. Por ejemplo la inserción de la capa de CloudMade Red Alert quedaría de la siguiente manera:</p>
<p><code>102|Cloudmade Red Alert;0,</p>
<p>http://a.tile.cloudmade.com/8bafab36916b5ce6b4395ede3cb9ddea/8/256/&gt;</p>
<p>http://b.tile.cloudmade.com/8bafab36916b5ce6b4395ede3cb9ddea/8/256/&gt;</p>
<p>http://c.tile.cloudmade.com/8bafab36916b5ce6b4395ede3cb9ddea/8/256/,</p>
<p>png,18,0,256,<br />
-2.0037508342789244E7,-2.0037508342789244E7,-2.0037508342789244E7,<br />
-2.0037508342789244E7,2.0037508342789244E7,2.0037508342789244E7,<br />
EPSG:900913,<br />
156543.03392804096153584694438047:78271.516964020480767923472190235:<br />
39135.758482010240383961736095118:19567.879241005120191980868047559:<br />
9783.9396205025600959904340237794:4891.9698102512800479952170118897:<br />
2445.9849051256400239976085059448:1222.9924525628200119988042529724:<br />
611.49622628141000599940212648621:305.74811314070500299970106324311:<br />
152.87405657035250149985053162155:76.437028285176250749925265810776:<br />
38.218514142588125374962632905388:19.109257071294062687481316452694:<br />
9.5546285356470313437406582263471:4.7773142678235156718703291131735:<br />
2.3886571339117578359351645565868:1.1943285669558789179675822782934:<br />
0.59716428347793945898379113914669:0.29858214173896972949189556957335:<br />
0.14929107086948486474594778478667:0.074645535434742432372973892393336:<br />
0.037322767717371216186486946196668:0.018661383858685608093243473098334:<br />
0.009330691929342804046621736549167</code></p>
<p>Una vez que hemos insertado las diferentes capas en la librería podremos utilizarlas desde nuestra aplicación simplemente creando un renderer de la capa que necesitamos y pasandosela como parámetro a la TileOverlay que queremos crear:</p>
<p><code> renderer = Layers.getInstance().getRenderer(Nombre_de_la_capa);<br />
baseLayer = new TileOverlay(getApplicationContext(), mapView,<br />
Nombre_de_la_capa, renderer, CompatManager.getInstance()<br />
.getRegisteredContext(), true);<br />
</code></p>
<p>Para el manejo de la posición actual del dispositivo se utilizó las funciones de la API de Android que gestionan el GPS de los terminales. La implementación dentro del proyecto realiza la búsqueda del mejor proveedor de localización teniendo en cuenta la precisión de la medida (<code>Criteria.ACCURACY_FINE</code>) y actualiza la posición cuando esta cambia. Permite así la realización de búsquedas por posición consumiendo las funciones que ofrece la API de ikiMap para este propósito.</p>
<p>La creación de mapas de ikiMap permite la asignación de diferente simbología a las geometrías. Desde el entorno web de la aplicación, esto no representa ningún problema. La mayoría de las librerías que se utilizan para webmapping permiten la asignación de símbolos personalizados mediante llamadas a una imagen que se encuentre publicada en la web. Para el caso de Android, el estado de las librerías en el momento del desarrollo, no disponía de esta funcionalidad. Para solucionar esto, se creó una clase <code>SymbolizedJTSFeature</code> que hereda de una <code>JTSFeature</code>. Para el manejo de símbolos se crearon clases propias como <code>IkiMapCollectionSymbol</code>. Resumiendo, lo que se hace es asignar a la geometría, cuando esta es tipo punto, un bitmap con el símbolo. Para ello se implementan servicios que descargan estás imágenes de la web y las sitúa sobre el mapa en la posición de la geometría asociándola a esta mediante el uso de las clases anteriores. Aquí es donde se nos han presentado algunos problemas con la gestión de la memoria. En la gestión de las imágenes dentro de la aplicación hay que tener control sobre los flujos de descarga de estas y el manejo de las mismas dentro de los diferentes estados de las actividades para evitar leaks de memoria y los errores ANR (Aplication Not Responding). Tras un exhaustivo estudio de la gestión de la memoria apoyándonos en herramientas como el <a title="Memory Analizer" href="http://www.eclipse.org/mat/" target="_blank">Memory Analizer (MAT)</a> se consiguió detectar las fuentes de los errores y optimizar el proceso de gestión de las imágenes.</p>
<p style="text-align: center;"><a href="http://geomati.co/wp-content/uploads/2012/06/draw-controls.png"><img class="aligncenter size-full wp-image-197" title="Diagrama controles" src="http://geomati.co/wp-content/uploads/2012/06/draw-controls.png" alt="" width="678" height="307" /></a><br />
<em>Diagrama de clases para dibujado</em></p>
<p>Por último, la parte más importante de todo el desarrollo, la edición vectorial en dispositivos móviles. Esta parte era la que, a priori, más dudas planteaba. Necesitábamos poder crear geometrías dibujando en nuestro terminal. Tras la refactorización de la MapView de gvSIG Mini, esta quedó preparada para la inserción de controles de manera sencilla. Así que apoyandonos en la clase de gvSIG <code>AbstractMapControl</code> y la interfaz <code>IMapControl</code>, se generaron los controles de dibujado. Estos se apoyan en una capa de dibujado <code>DrawingOverlay</code> donde van creando las geometrías. El modo edición dispone de las funcionalidades comunes, como añadir punto y eliminar último punto. Una vez terminada la edición, se pueden incluir los datos alfanuméricos asociados a la geometría y seguidamente un parser de KML crea un fichero KML que es enviado a los servidores de la aplicación.</p>
<p>De momento la aplicación no ha visto la luz, esperemos que lo haga en breve y que se ponga a disposición el código con estas funcionalidades. Mientras os dejamos el vídeo con la presentación de las Jornadas de Sig Libre de Girona del 2012.</p>
<p><iframe src="http://player.vimeo.com/video/43972442" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<p><a href="http://vimeo.com/43972442">ikiMap, la plataforma social de la cartografía</a> from <a href="http://vimeo.com/sigteudg">SIGTE &#8211; Universitat de Girona</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Saludos.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/ikimap-y-la-edicion-vectorial-en-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GGL2-gvSIG course is finished</title>
		<link>http://geomati.co/ggl2-gvsig-course-is-finished/</link>
		<comments>http://geomati.co/ggl2-gvsig-course-is-finished/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 09:12:16 +0000</pubDate>
		<dc:creator>fergonco</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[ggl]]></category>
		<category><![CDATA[ggl2]]></category>
		<category><![CDATA[gvsig]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=185</guid>
		<description><![CDATA[We have just finished the first GGL2 Geoprocessing course together with the gvSIG Association and it is time to sum up all the experiences and the share all the improvements we made in that context. First, the interaction with the &#8230; <a href="http://geomati.co/ggl2-gvsig-course-is-finished/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We have just finished the first GGL2 Geoprocessing course together with the gvSIG Association and it is time to sum up all the experiences and the share all the improvements we made in that context.</p>
<p><span id="more-185"></span></p>
<p>First, the interaction with the students has been very pleasant. They were quite different, coming from different professional areas, so it was not easy to give a course that would fit everyone. There were some students that did not have any previous programming experience and needed to learn the basics of programming as well as the GGL2 specifics, so they had to work very hard. There were also some students that did have previous programming experience and did a lot of optional exercises, so they worked very hard too. As a result, almost all the students got their gvSIG certification. Only a couple of them could not pass the course due to unforeseen circumstances.</p>
<p>On the other hand, the evaluation of the course by the students has been also satisfactory. According to the satisfaction survey, they found it very interesting and seems like the exposition of the contents has been very clear. However, the duration of the course has not been exactly adequate to the contents.</p>
<p>As far as the language and tools are concerned, there have been a lot of improvements and corrections before and during the course. Before the course, and specifically for that matter, we prepared a new set of command line tools. These command-line utilities provide two commands in order to compile (gglc) and execute (ggl) GGL2 code. Thus, it is now possible to use a lightweight tool in order to compile and execute GGL2 and it won&#8217;t be necessary any graphical user interface anymore. However, the graphical user interface still is pretty cool and we recommend you to use it as well. Moreover, new documentation has been added to the GearScape site. There&#8217;s a tutorial on how to compile and execute programs with the command-line tools [1] as well as some reference documentation [2].</p>
<p>Furthermore, the students worked on different environments and they found some bugs related to the different platforms. They also tried a lot of different things in order to solve the exercises and they found also a few hidden bugs. All these issues are resolved now. As a result, we have published a new milestone GGLM5.</p>
<p>Finally, regarding documentation, the course has been published[3] using a Attribution-ShareAlike CC license. Also, the solution to all the exercises are available in the GGL2 repository[4]. Thus, it is possible to download the course documentation and correct your exercises against the provided solutions. If any question pops up, simply address it to the mailing lists [5].</p>
<p>We want to thank the students for their interest and enthusiasm and the gvSIG association for their help in making the course a reality.</p>
<div>[1] Hello Command-line tutorial &#8211; <a href="http://www.gearscape.org/html/ggl2/tutorials/hellocl.html" target="_blank">http://www.gearscape.org/html/<wbr>ggl2/tutorials/hellocl.html</wbr></a></div>
<div>[2] Command-line reference documentation &#8211; <a href="http://www.gearscape.org/html/ggl2/ref/" target="_blank">http://www.gearscape.org/html/<wbr>ggl2/ref/</wbr></a></div>
<div>[3] Course material (Spanish) &#8211; <a title="http://gearscape.fergonco.es/html/ggl2/ggl2-course.pdf" href="http://gearscape.fergonco.es/html/ggl2/ggl2-course.pdf" target="_blank">http://gearscape.fergonco.es/html/ggl2/ggl2-course.pdf</a></div>
<div>[4] Course solutions &#8211; <a title="http://xp-dev.com/svn/ggl2/tags/2.0M5/libs/workshop/src-ggl/es/gvsig_course/" href="http://xp-dev.com/svn/ggl2/tags/2.0M5/libs/workshop/src-ggl/es/gvsig_course/" target="_blank">http://xp-dev.com/svn/ggl2/tags/2.0M5/libs/workshop/src-ggl/es/gvsig_course/</a></div>
<div>[5] GGL2 Community &#8211; <a href="http://www.gearscape.org/index.php/community" target="_blank">www.gearscape.org/index.php/<wbr>community</wbr></a></div>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/ggl2-gvsig-course-is-finished/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nuevos métodos de transformación en GeoServer y GeoTools</title>
		<link>http://geomati.co/geoserver-datum/</link>
		<comments>http://geomati.co/geoserver-datum/#comments</comments>
		<pubDate>Tue, 05 Jun 2012 07:43:10 +0000</pubDate>
		<dc:creator>Oscar Fonts</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[geoserver]]></category>
		<category><![CDATA[geotools]]></category>

		<guid isPermaLink="false">http://geomati.co/?p=150</guid>
		<description><![CDATA[Aprovechando que desde geosolutions se han currado un buen post sobre el tema, abusamos de su confianza para plagiarlo y adaptarlo al ámbito hispano. Presentamos aquí los nuevos métodos de transformación de coordenadas que hemos incorporado a GeoServer y GeoTools, &#8230; <a href="http://geomati.co/geoserver-datum/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Aprovechando que desde geosolutions se han currado <a href="http://geo-solutions.blogspot.com.es/2012/06/developers-corner-accurate-datum-shift.html" target="_blank">un buen post sobre el tema</a>, abusamos de su confianza para plagiarlo y adaptarlo al ámbito hispano.</p></blockquote>
<p>Presentamos aquí los nuevos métodos de transformación de coordenadas que hemos incorporado a <a href="http://www.geoserver.org" target="_blank">GeoServer</a> y <a href="http://www.geotools.org" target="_blank">GeoTools</a>, así como las nuevas herramientas que permitirán controlar mejor qué transformaciones de coordenadas debe aplicar GeoServer en cada caso.</p>
<p>A partir de la <a href="http://blog.geoserver.org/2012/05/22/geoserver-2-2-beta2-released/" target="_blank">versión 2.2-beta2</a>, GeoServer puede utilizar rejillas de transformación en formatos NTv2 y NADCON. Gracias a estos nuevos métodos se amplían las posibilidades de transformación con métodos que permiten modelar mejor las distorsiones entre los sistemas de referencia tradicionales y los de nueva implantación.</p>
<p style="text-align: justify;"><a href="http://geomati.co/wp-content/uploads/2012/06/spain_distortion.png"><img class="aligncenter size-full wp-image-155" title="Distorsión entre ED50 y ETRS89 en la España peninsular" src="http://geomati.co/wp-content/uploads/2012/06/spain_distortion.png" alt="Distorsión entre ED50 y ETRS89 en la España peninsular" width="512" height="326" /></a>La razón de esta diferencia es simple: la transformación 7 parámetros es un cambio de base en el espacio 3D, lo cual no permite modelar ciertas distorsiones, mientras que una transformación de rejilla establece un mapeo punto a punto entre las posiciones en ambos sistemas de referencia.</p>
<p>Por defecto, GeoServer soporta las rejillas incluídas en la base de datos EPSG,<a href="http://docs.geoserver.org/latest/en/user/advanced/crshandling/coordtransforms.html#add-grid-shift-transform-files" target="_blank"> listadas en su manual de usuario</a>. Bastará con descargar los ficheros de rejilla y copiarlos en el directorio de datos de GeoServer.</p>
<p>Pero esta no es la única novedad. GeoServer hasta ahora ha dependido de la base de datos EPSG para determinar la mejor transformación entre dos sistemas de referencia. Esto no siempre es la mejor solución. Puesto que las transformaciones de datum se determinan de forma empírica (midiendo y comparando puntos sobre el terreno), en ocasiones se dispone de métodos y observaciones más precisas para un caso determinado, aunque no se incluyan oficialmente en EPSG. Por ejemplo, el <a href="http://www.ign.es" target="_blank">Instituto Geográfico Nacional</a> publica <a href="ftp://ftp.geodesia.ign.es/documentos/Cambio_ETRS89/GSB/" target="_blank">una rejilla NTv2</a> que cubre todo el territorio peninsular español, con un error asociado que puede llegar hasta el metro en algunos casos, mientras que el <a href="http://www.icc.cat" target="_blank">Institut Cartogràfic de Catalunya</a> publica una <a href="http://www.icc.cat/cat/Home-ICC/Geodesia/Recursos" target="_blank">rejilla específica para Catalunya</a>, que acota el error residual a 5 cm. En el caso del ICC, la rejilla no modela la distorsión, sino que equivale a aplicar la transformación oficial (de semejanza bidimensional).</p>
<p>Así pues, definiendo una transformación personalizada se pueden conseguir resultados óptimos para situaciones específicas. Estas definiciones no sólo se limitan a las transformaciones de rejilla: véase de nuevo el <a href="http://docs.geoserver.org/latest/en/user/advanced/crshandling/coordtransforms.html#define-a-custom-coordinate-operation" target="_blank">manual de GeoServer</a> sobre cómo definir transformaciones personalizadas.</p>
<p style="text-align: center;"><img class="aligncenter" title="Distancia media entre los puntos en una hoja transformada por GeoServer y la misma hoja descargada del ICC" src="http://geomati.co/icc_datumshift/_images/posicio.png" alt="Distancia media entre los puntos en una hoja transformada por GeoServer y la misma hoja descargada del ICC" width="737" height="522" /></p>
<p>Entonces, ¿cómo comprobar qué transformación se aplica en cada caso, y si está bien definida? GeoServer 2.2 viene con una nueva herramienta en el apartado &#8220;demo&#8221;, la consola de transformación, que permite efectuar manualmente transformaciones entre cualquier par de sistemas de coordenadas, y comprobar los detalles de la transformación que se está aplicando en cada caso.</p>
<p><img class="aligncenter" title="Consola de reproyección en GeoServer 2.2" src="http://geomati.co/icc_datumshift/_images/reprojection_console.png" alt="Consola de reproyección en GeoServer 2.2" width="750" height="508" /></p>
<p>La mayor parte de este trabajo ha sido financiada por el <a href="http://www.icc.cat">Institut Cartogràfic de Catalunya </a>y desarrollada por quien escribe, pero también ha contado con el imprescindible apoyo de <a href="https://twitter.com/#!/geowolf" target="_blank">Andrea Aime</a>, que ha revisado las contribuciones de código y ha aportado herramientas muy útiles, como la misma consola de reproyección.</p>
<p>Para los más entusiastas, teneis a vuestra disposición un <a href="http://geomati.co/icc_datumshift/" target="_blank">informe detallado</a> con el &#8220;making of&#8221; del desarrollo.</p>
]]></content:encoded>
			<wfw:commentRss>http://geomati.co/geoserver-datum/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
