<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5970315134912558864</id><updated>2012-01-27T08:27:58.839+01:00</updated><category term='phoneme'/><category term='raster'/><category term='mobile'/><category term='devel'/><category term='worldwind'/><category term='charting'/><category term='macosx'/><category term='mvn'/><category term='mixare'/><category term='gzip'/><category term='nls'/><category term='rants and opinions'/><category term='ercp'/><category term='blob'/><category term='compression'/><category term='console'/><category term='rcp geotools'/><category term='geonotes'/><category term='sld'/><category term='git'/><category term='osm'/><category term='osgeo'/><category term='netcdf'/><category term='windows'/><category term='trimble'/><category term='oms3'/><category term='openmi'/><category term='eclipse'/><category term='jgrass'/><category term='hg'/><category term='file'/><category term='vector'/><category term='osgeo4w'/><category term='grass geotools'/><category term='database'/><category term='announcements'/><category term='linux'/><category term='docs'/><category term='udig'/><category term='restructeredtext'/><category term='java'/><category term='lidar'/><category term='bridge'/><category term='licenses'/><category term='geopaparazzi'/><category term='nettools'/><category term='beegis'/><category term='uibuilder'/><category term='gps'/><category term='rcp'/><category term='grass'/><category term='timezone'/><category term='android'/><category term='hsqldb'/><category term='groovy'/><category term='crs'/><category term='jgrasstools'/><category term='network'/><category term='serialize'/><category term='read/write'/><category term='zip'/><category term='svn'/><title type='text'>JGrass Tech Tips</title><subtitle type='html'>...a summary of how-to-do-(mostly-GIS)-development-things in JGrass-UDig-BeeGIS-Geopaparazzi-Eclipse-Java as they pass me by...
&lt;br&gt;&lt;br&gt;
That's all folks... and code!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default?start-index=101&amp;max-results=100'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>210</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4371854523030862880</id><published>2012-01-05T14:52:00.000+01:00</published><updated>2012-01-05T14:52:19.929+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><category scheme='http://www.blogger.com/atom/ns#' term='gps'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='mixare'/><title type='text'>Geopaparazzi gets to know Mixare</title><content type='html'>It is now a long time I said I would have tried that. Finally I found the time to code that minipart that would make Geopaparazzi with one project that really interests me: &lt;a href="http://www.mixare.org/"&gt;Mixare&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I have always been interested in &lt;a href="http://en.wikipedia.org/wiki/Augmented_reality"&gt;Augmented Reality&lt;/a&gt;. My thought is that on low cost devices it is something more entertaining than really useful for job/engineering/surveying purposes. But many times start as a joke and get great with the time, right?&lt;br /&gt;&lt;br /&gt;Anyways, Mixare has a simple approach (&lt;a href="http://www.mixare.org/usage/"&gt;actually more than one&lt;/a&gt;), which bases on the consuming of a json file with the info to show in the augmented world. After that one intent calls the app itself and takes care of the rest.&lt;br /&gt;&lt;br /&gt;Quite easy, yes, kudos to the Mixare team (we live at about 30Km distance from each other, it was about time to try that out :) ).&lt;br /&gt;&lt;br /&gt;So in the next release of geopaparazzi we will have one more feature, which the possibility to load the data currently visible in the map's viewport through the new "view in mixare" option (note the bookmarks stars):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ZfuidtkX1OQ/TwWowzFtG0I/AAAAAAABWq4/0-AEYIMvyBk/s1600/P20120105124528.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="250" width="400" src="http://4.bp.blogspot.com/-ZfuidtkX1OQ/TwWowzFtG0I/AAAAAAABWq4/0-AEYIMvyBk/s400/P20120105124528.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Geopaparazzi does nothing more than formatting the point data available in the current viewport of the map and feed them to mixare:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-3DEoonlU0Kw/TwWpiHRvKBI/AAAAAAABWrE/44R6qbBuUXY/s1600/P20120105124608.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="250" width="400" src="http://3.bp.blogspot.com/-3DEoonlU0Kw/TwWpiHRvKBI/AAAAAAABWrE/44R6qbBuUXY/s400/P20120105124608.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The gps position from which this screen was taken is the white/blue dot in the lower right angle of the first image. Obviously the elevation of the thing is not precise, since the bookmarks are placed at a 0 level in geopaparazzi. But geonote have an elevation info and will be a bit better (even if by no means precise). And the direction if definitely ok to be used for low-precision purposes.&lt;br /&gt;&lt;br /&gt;Anyways, nice it worked out of the box. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4371854523030862880?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4371854523030862880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4371854523030862880' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4371854523030862880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4371854523030862880'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2012/01/geopaparazzi-gets-to-know-mixare.html' title='Geopaparazzi gets to know Mixare'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ZfuidtkX1OQ/TwWowzFtG0I/AAAAAAABWq4/0-AEYIMvyBk/s72-c/P20120105124528.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3236822919419112837</id><published>2012-01-03T17:25:00.000+01:00</published><updated>2012-01-03T17:25:22.501+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='nettools'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo4w'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>uDig 1.3.1 now in Osgeo4W</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;We have tested the latest uDig 1.3.1 for a little while now and it is working nice!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-b9Hofh0PVq8/TwMqmX65GOI/AAAAAAABWqY/AM1WuZTzDvs/s1600/UdigLogo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-b9Hofh0PVq8/TwMqmX65GOI/AAAAAAABWqY/AM1WuZTzDvs/s1600/UdigLogo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It was time to update the version on the &lt;a href="http://trac.osgeo.org/osgeo4w/"&gt;osgeo for windows installer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We have tested it also with the &lt;a href="http://code.google.com/p/beegis/" target="_blank"&gt;BeeGIS &lt;/a&gt;and Nettools plugins.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;As usual, to get it, just &lt;a href="http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe"&gt;run the installer here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3236822919419112837?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3236822919419112837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3236822919419112837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3236822919419112837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3236822919419112837'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2012/01/udig-131-now-in-osgeo4w.html' title='uDig 1.3.1 now in Osgeo4W'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-b9Hofh0PVq8/TwMqmX65GOI/AAAAAAABWqY/AM1WuZTzDvs/s72-c/UdigLogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4416090522049467396</id><published>2012-01-03T15:52:00.000+01:00</published><updated>2012-01-03T15:52:52.702+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>The jgrasstools 0.7.3 are out!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Really not much more to say here. &lt;br /&gt;&lt;br /&gt;Some users needed an updated version of OMS3 and we had enough fixes and new experimental modules to share, so we rolled 0.7.3 out.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://wiki.jgrasstools.googlecode.com/hg/images/frontpage/jgrassgears.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://wiki.jgrasstools.googlecode.com/hg/images/frontpage/jgrassgears.png" width="141" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;As usual this has been tested with &lt;a href="http://udig.refractions.net/" target="_blank"&gt;uDig's &lt;/a&gt;&lt;a href="http://udig.refractions.net/confluence/display/EN/Introduction+to+the+Spatial+Toolbox" target="_blank"&gt;Spatial Toolbox&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4416090522049467396?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4416090522049467396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4416090522049467396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4416090522049467396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4416090522049467396'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2012/01/jgrasstools-073-are-out.html' title='The jgrasstools 0.7.3 are out!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7965879426451590112</id><published>2011-12-31T11:20:00.000+01:00</published><updated>2011-12-31T11:21:42.356+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='nettools'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo4w'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='oms3'/><title type='text'>This amazing Geo2011 has come to an end. Welcoming Geo2012!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;It has been a while I didn't write here, but we have been very busy in bringing it on with our community projects.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://lisasoft.com/" target="_blank"&gt;Lisasoft&lt;/a&gt; and the restless &lt;a href="http://how2map.blogspot.com/" target="_blank"&gt;Jody Garnett&lt;/a&gt; &lt;a href="http://udig.refractions.net/" target="_blank"&gt;uDig&lt;/a&gt; got a whole pile of new features and&lt;a href="http://udig.refractions.net/confluence/display/UDIG/RFC" target="_blank"&gt; will be growing nicely&lt;/a&gt; over the next year.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YachHy7Zejc/Tv7aoNjpbLI/AAAAAAABWos/nZR4ePpY1fw/s1600/udig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/-YachHy7Zejc/Tv7aoNjpbLI/AAAAAAABWos/nZR4ePpY1fw/s320/udig.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.hydrologis.com/" target="_blank"&gt;us&lt;/a&gt;, we now finally have a stable &lt;a href="http://udig.refractions.net/confluence/display/EN/Introduction+to+the+Spatial+Toolbox" target="_blank"&gt;Spatial Toolbox&lt;/a&gt; in uDig, which for now bases on the &lt;a href="http://www.jgrasstools.org/" target="_blank"&gt;JGrasstools&lt;/a&gt; project, but is extensible through the &lt;a href="http://www.javaforge.com/project/oms" target="_blank"&gt;OMS3 &lt;/a&gt;model linking technology.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-PDVgZGqZQp4/Tv7a-vIKsSI/AAAAAAABWo4/yzMmzKFCdmU/s1600/omsbox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://1.bp.blogspot.com/-PDVgZGqZQp4/Tv7a-vIKsSI/AAAAAAABWo4/yzMmzKFCdmU/s320/omsbox.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Also the cooperation we had with the Colorado State University and the USDA on OMS3 has been amazing and could be summarized &lt;a href="http://www.slideshare.net/moovida/linking-environmental-models-together-to-make-the-world-a-better-place-the-gis-approach" target="_blank"&gt;in this presentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also on the mobile side a lot has been going on. In the last months Geopaparazzi could welcome a new contributor, &lt;a href="http://www.lucadelu.org/" target="_blank"&gt;Luca Delucchi&lt;/a&gt;, which is an active member of the &lt;a href="http://www.osm.org/" target="_blank"&gt;Openstreetmap &lt;/a&gt;community. Sharing a train travel together when returning from the Italian GFOSS conference, it happened that we lost the train and started to talk about how we could make geopaparazzi a better tool for OSM members. Well, we didn't just talk and sure thing one of the most important features that will get out with geopaparazzi 2.6 (we are testing those right now) is the support for OSM points.&lt;br /&gt;&lt;br /&gt;The map view now presents an OSM logo handle on the right side, and when opened it shows the supported OSM categories:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fq1mLo1btzs/Tv7cU0YYr5I/AAAAAAABWpE/ajWtcPuxpxA/s1600/P20111231103528.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-fq1mLo1btzs/Tv7cU0YYr5I/AAAAAAABWpE/ajWtcPuxpxA/s320/P20111231103528.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;By selecting a category you gain access to the supported tags:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OfomCWRdloU/Tv7cgsJ_o-I/AAAAAAABWpQ/O5rroXW3j5w/s1600/P20111231103542.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-OfomCWRdloU/Tv7cgsJ_o-I/AAAAAAABWpQ/O5rroXW3j5w/s320/P20111231103542.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The tags description generates the form:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-taJxm3XJrU8/Tv7cuNkIl8I/AAAAAAABWpc/os4b9i3hf08/s1600/P20111231103610.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-taJxm3XJrU8/Tv7cuNkIl8I/AAAAAAABWpc/os4b9i3hf08/s320/P20111231103610.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Once the form is saved the OSM point is in the database.&lt;br /&gt;&lt;br /&gt;The OSM points can then be synchronized with the online OSM account of the user. I really have been waiting for that a long while :)&lt;br /&gt;&lt;br /&gt;Another small addition is the enhancement of the profile view for gps logs, which now supports real charting and zooming as well as zoom to selection:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-pTUd8l79ehE/Tv7dxG8-tqI/AAAAAAABWpo/M7mUOTOPfiY/s1600/P20111231103428.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-pTUd8l79ehE/Tv7dxG8-tqI/AAAAAAABWpo/M7mUOTOPfiY/s320/P20111231103428.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A more complete story about geopaparazzi can be found &lt;a href="http://blog.spaziogis.it/2011/11/07/geopaparazzi-history-of-a-digital-mapping-kid/" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It has been also a great year for our enigneering company, which lead as side product from a cooperation with the university of Trento to the release of the Nettools. I recently gave a presentation about how we use the nettools, so I will leave it to &lt;a href="http://jgrasstechtips.blogspot.com/2011/05/nettools-100-in-osgeo4w.html" target="_blank"&gt;this post&lt;/a&gt; and &lt;a href="http://www.slideshare.net/moovida/strumenti-open-source-per-la-gestione-delle-reti-urbane" target="_blank"&gt;that presentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That has more or less been my Geo2011. A great year. I wish you all an even more amazing geo2012. See you around the world, being it in &lt;a href="https://sites.google.com/site/grassts/home" target="_blank"&gt;Trieste&lt;/a&gt;, &lt;a href="http://foss4g-cee.org/" target="_blank"&gt;Prague&lt;/a&gt; or &lt;a href="http://2012.foss4g.org/" target="_blank"&gt;Beijing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7965879426451590112?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7965879426451590112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7965879426451590112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7965879426451590112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7965879426451590112'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/12/this-amazing-geo2011-has-come-to-end.html' title='This amazing Geo2011 has come to an end. Welcoming Geo2012!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-YachHy7Zejc/Tv7aoNjpbLI/AAAAAAABWos/nZR4ePpY1fw/s72-c/udig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-659852243431108306</id><published>2011-11-19T18:11:00.001+01:00</published><updated>2011-11-19T18:31:29.564+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><title type='text'>Geopaparazzi 2.5.0 is out</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;We just released Geopaparazzi 2.5.0 to the market.&lt;br /&gt;&lt;br /&gt;The main changes are around images, which now are referenced in the database. That lead also to have a layer showing them in the map.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-CO2Chp88eUM/Tsfj8mx8KNI/AAAAAAABViI/zP64avaEBiw/s1600/P20111119162830.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-CO2Chp88eUM/Tsfj8mx8KNI/AAAAAAABViI/zP64avaEBiw/s400/P20111119162830.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;One thing long wanted was the insertion of the GPS tags in the pictures. So Exif tags are now supported, based on position, elevation (for whatever that means) and azimuth:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ezDUKNb-YEg/TsflLum0xXI/AAAAAAABViU/Nj7nQChj_EQ/s1600/P20111119162830_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="352" src="http://4.bp.blogspot.com/-ezDUKNb-YEg/TsflLum0xXI/AAAAAAABViU/Nj7nQChj_EQ/s400/P20111119162830_2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The notes workflow has been unified: both from the main and map view a notes view opens with both simple image/text notes and form based notes. Next week at the &lt;a href="http://gfoss.it/drupal/gfossday2011"&gt;Italian Osgeo chapter meeting&lt;/a&gt; we will talk about how to evolve the form part. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dWuV6fi2ypU/TsflpRv6fcI/AAAAAAABVig/YPdUoftuZRg/s1600/P20111119162916.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-dWuV6fi2ypU/TsflpRv6fcI/AAAAAAABVig/YPdUoftuZRg/s400/P20111119162916.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-659852243431108306?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/659852243431108306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=659852243431108306' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/659852243431108306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/659852243431108306'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/11/geopaparazzi-250-is-out.html' title='Geopaparazzi 2.5.0 is out'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-CO2Chp88eUM/Tsfj8mx8KNI/AAAAAAABViI/zP64avaEBiw/s72-c/P20111119162830.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3371792520214176402</id><published>2011-11-06T08:32:00.001+01:00</published><updated>2011-11-06T08:33:15.877+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='devel'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>android manifest permissions filter in the market</title><content type='html'>I had a hard time making Geopaparazzi appear in the market for my Asus Transformer. I first thought it was a screen size/density problem, but then I had any permission &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;supports-screens &lt;br /&gt;        android:smallScreens="true"&lt;br /&gt;        android:normalScreens="true" &lt;br /&gt;        android:largeScreens="true"&lt;br /&gt;        android:anyDensity="true" &lt;br /&gt;        android:resizeable="true"&amp;gt;&lt;br /&gt;&amp;lt;/supports-screens&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;so I tried to play on sdk versions, btu had the same results:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;uses-sdk &lt;br /&gt;         android:targetSdkVersion="14" &lt;br /&gt;         android:minSdkVersion="5"&amp;gt;&lt;br /&gt;&amp;lt;/uses-sdk&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;and I read a dozend times through the docs and finally noted the necessary part:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In general, if an application requests hardware-related permissions, Android Market assumes that the application requires the underlying hardware features, even though there might be no corresponding to &lt;uses-feature&gt; declarations. Android Market then sets up filtering based on the features implied by the &lt;uses-feature&gt; declarations.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Well, as obvious as it sounds, my Asus has no telephony soppurt, and therefore it was not listed because that permission was asked.&lt;br /&gt;&lt;br /&gt;Android 2.0 (API 5) brings the possibility to declare optional features:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;uses-feature &lt;br /&gt;       android:name="android.hardware.telephony"&lt;br /&gt;       android:required="false"&amp;gt;&lt;br /&gt;&amp;lt;/uses-feature&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;That does the trick.&lt;br /&gt;&lt;br /&gt;I hope that saves some headache to someone else.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3371792520214176402?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3371792520214176402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3371792520214176402' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3371792520214176402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3371792520214176402'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/11/androi-dmanifest-permissions-filter-in.html' title='android manifest permissions filter in the market'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1257322886675373752</id><published>2011-11-05T14:44:00.000+01:00</published><updated>2011-11-07T11:31:50.270+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Geopaparazzi 2.4, pouring the beer!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There has been lots going on about geopaparazzi in the last year.&lt;br /&gt;&lt;br /&gt;Customizations have been in the fields of disaster management and waste management, find a short &lt;a href="http://code.google.com/p/geopaparazzi/wiki/ProjectsUsingIt"&gt;description here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-L69GQmXdfN4/TrU9d7aCVGI/AAAAAAABUso/9ANSFGlG3EQ/s1600/01_dmis.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-L69GQmXdfN4/TrU9d7aCVGI/AAAAAAABUso/9ANSFGlG3EQ/s320/01_dmis.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;There has been talk about integration with the ODK project.&lt;br /&gt;&lt;br /&gt;With the new android based tablets there has been talk to get more features from BeeGIS into Geopaparazzi to bring the field survey on those new, lightweight, nice cozy, smart devices.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-QvcvHxvhXH8/TrU9lXT7XoI/AAAAAAABUsw/oz5AZLenqsk/s1600/trashmapper.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://1.bp.blogspot.com/-QvcvHxvhXH8/TrU9lXT7XoI/AAAAAAABUsw/oz5AZLenqsk/s320/trashmapper.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Our (HydroloGIS) objective has been to release the project as free in the market (it has been free and open source from the very start) once we had the money in we needed to buy the book to learn android development. Well, we got more, we got to develop customizations and it is about time that we finally release it free in the market.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So it is official, Geopaparazzi is now not only free as in speach, but also as in beer!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We would like to express our gratitude to all those that supported us through the buying of the application!&lt;br /&gt;&lt;br /&gt;We also hope this will attract developers to contribute to the project.&lt;br /&gt;&lt;br /&gt;Cheers!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1257322886675373752?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1257322886675373752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1257322886675373752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1257322886675373752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1257322886675373752'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/11/geopaparazzi-24-pouring-beer.html' title='Geopaparazzi 2.4, pouring the beer!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-L69GQmXdfN4/TrU9d7aCVGI/AAAAAAABUso/9ANSFGlG3EQ/s72-c/01_dmis.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3601385783960928040</id><published>2011-11-04T09:19:00.001+01:00</published><updated>2011-11-04T16:30:35.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>HyUml apps for yUML</title><content type='html'>Woa... it has been a busy time and my posting force has really dropped. There are a lot of news in the jgrasstools, uDig and open source world to tell about, but for now I will just announce this (I do not need my brain to write about certain things).&lt;br /&gt;&lt;br /&gt;I recently got in need to be able to do some design on the road on an android tablet. So I started to search in the market and found some apps. They all were posing as gui to the really nice &lt;a href="http://yuml.me"&gt;yUML&lt;/a&gt; project.&lt;br /&gt;I found that an amazing idea, but the available tools didn't have certain features I felt were necessary:&lt;br /&gt;&lt;br /&gt;* to have an editor and uml view aside of each other&lt;br /&gt;* be able to easily load and save files and dump the image to disk&lt;br /&gt;* be on both android and desktop &lt;br /&gt;&lt;br /&gt;That is why I started HyUml:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-M4TA8k1SGyM/TrOfLf1yGHI/AAAAAAABUsI/8S_26TQNeh8/s1600/splash.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="260" width="400" src="http://1.bp.blogspot.com/-M4TA8k1SGyM/TrOfLf1yGHI/AAAAAAABUsI/8S_26TQNeh8/s400/splash.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It is already very usable and it is coded in really few time and with no resources, but it serves the purpose and I am having a good time with it. It is obviously open sourced, so maybe you can also make use of it.&lt;br /&gt;&lt;br /&gt;Some snaps:&lt;br /&gt;&lt;br /&gt;RCP Version:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EPajdSVItWE/TrOfi2zbURI/AAAAAAABUsU/0SjtiQznj7o/s1600/01_rcpversion.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="289" width="400" src="http://4.bp.blogspot.com/-EPajdSVItWE/TrOfi2zbURI/AAAAAAABUsU/0SjtiQznj7o/s400/01_rcpversion.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Well, maybe I should add that in the lower left panel you get the html img tag text that you can put inside a wiki to have the diagram generated there. This is nifty :)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Android version:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kQGkD0Wko5k/TrOfolIZ2VI/AAAAAAABUsg/yll_eeEAt6k/s1600/02_androidversion.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="250" width="400" src="http://1.bp.blogspot.com/-kQGkD0Wko5k/TrOfolIZ2VI/AAAAAAABUsg/yll_eeEAt6k/s400/02_androidversion.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;While the android version is in the market, the rcp version has to be built as an eclipse application. For thos interested in the source code of the two projects, they are both on &lt;a href="https://bitbucket.org/moovida/hyuml"&gt;bitbucket on the hyuml repository&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Enjoy..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3601385783960928040?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3601385783960928040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3601385783960928040' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3601385783960928040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3601385783960928040'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/11/hyuml-apps-for-yuml.html' title='HyUml apps for yUML'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-M4TA8k1SGyM/TrOfLf1yGHI/AAAAAAABUsI/8S_26TQNeh8/s72-c/splash.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7232696674822825330</id><published>2011-10-03T13:00:00.002+02:00</published><updated>2011-11-07T11:33:06.532+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>uDig's new tools palatte and options</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Not much to say here, it has already been written down&lt;a href="http://udig-news.blogspot.com/2011/10/tool-palette-and-options.html"&gt; in this great post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Just wanted to let you know.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7232696674822825330?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7232696674822825330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7232696674822825330' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7232696674822825330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7232696674822825330'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/10/udigs-new-tools-palatte-and-options.html' title='uDig&apos;s new tools palatte and options'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7261478915054730238</id><published>2011-09-09T11:50:00.001+02:00</published><updated>2011-11-07T11:33:06.537+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='gps'/><title type='text'>Geopaparazzi Egnos Tests</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gQTF69qWcG8/Tmng_hbfWaI/AAAAAAABTac/NO-JbyVQooM/s1600/devices.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-gQTF69qWcG8/Tmng_hbfWaI/AAAAAAABTac/NO-JbyVQooM/s400/devices.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;More about on the &lt;a href="http://code.google.com/p/geopaparazzi/wiki/EgnosTests"&gt;Geopaparazzi WIKI&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oqEAI5gOSUo/TmnhTHqhMOI/AAAAAAABTak/lBEBQZf7yj8/s1600/04_egnos_correction.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-oqEAI5gOSUo/TmnhTHqhMOI/AAAAAAABTak/lBEBQZf7yj8/s400/04_egnos_correction.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7261478915054730238?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7261478915054730238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7261478915054730238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7261478915054730238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7261478915054730238'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/09/geopaparazzi-egnos-tests.html' title='Geopaparazzi Egnos Tests'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-gQTF69qWcG8/Tmng_hbfWaI/AAAAAAABTac/NO-JbyVQooM/s72-c/devices.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1957977593048549591</id><published>2011-09-05T09:23:00.000+02:00</published><updated>2011-09-05T09:26:07.181+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Migg and Nettools courses planned</title><content type='html'>For all those interested in taking class about hydrology, geomorphology, water supply systems and stormwaters, all done with Free and Open Source tools, the following could be of help.&lt;br /&gt;&lt;br /&gt;The C.U.D.A.M. of the University of Trento, has defined the dates of the next courses:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MIGG: Hydro-geomorphologic analysis integrated in GIS&lt;/b&gt;&lt;br /&gt;25-28 October 2011&lt;br /&gt;&lt;br /&gt;A new course is available from this year, which deals with water supply systems and is scheduled as follows:&lt;br /&gt;&lt;b&gt;Planning and maintainance of hydraulic networks&lt;/b&gt;&lt;br /&gt;7-10 February 2012&lt;br /&gt;&lt;br /&gt;All the courses use the Free and Open Source softwares &lt;a href="http://udig.refractions.net"&gt;uDig&lt;/a&gt; and &lt;a href="http://www.jgrass.org"&gt;JGrass&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More info at the official website of the courses: http://events.unitn.it/migg2011-12&lt;br /&gt;&lt;br /&gt;The only downside... the courses are kept in Italian.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1957977593048549591?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1957977593048549591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1957977593048549591' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1957977593048549591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1957977593048549591'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/09/migg-and-nettools-courses-planned.html' title='Migg and Nettools courses planned'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5729181124298548781</id><published>2011-08-12T13:30:00.006+02:00</published><updated>2011-11-07T11:33:06.526+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='raster'/><title type='text'>Small enhancement in single band raster styling</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We already had tools to style single banded raster, i.e. color ramps on elevation models and similar things.&lt;br /&gt;What was missing was a nice handling of novalues and other values we would not care. Take for example the following map:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-wnFs5VR2G4U/TkUPOaNTJAI/AAAAAAABTWs/yIDjW-TUsRM/s1600/01_new_raster_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://4.bp.blogspot.com/-wnFs5VR2G4U/TkUPOaNTJAI/AAAAAAABTWs/yIDjW-TUsRM/s400/01_new_raster_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5639930848579101698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is how an ascii grid is loaded into udig...&lt;br /&gt;&lt;br /&gt;Well, we can ask to read the values to propose a colortable through "reset colormap". But that would consider -9999 novalues. Therefore we added the possibility to define other novalues to ignore in the process. Applying that colortable will produce:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-wlqN0XOuGJY/TkUP1NJnhUI/AAAAAAABTW0/jQRjJy0yVRQ/s1600/02_new_raster_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="http://3.bp.blogspot.com/-wlqN0XOuGJY/TkUP1NJnhUI/AAAAAAABTW0/jQRjJy0yVRQ/s400/02_new_raster_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5639931515088897346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Where is the problem? The 0. The map was probably transformed and the altered collar part has been set to 0. We can try to add to the novalues list also the 0 and reset once more:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-gqO15j0pmhk/TkUQKeDVVGI/AAAAAAABTW8/4po0_7EGj14/s1600/03_new_raster_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 221px;" src="http://2.bp.blogspot.com/-gqO15j0pmhk/TkUQKeDVVGI/AAAAAAABTW8/4po0_7EGj14/s400/03_new_raster_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5639931880403194978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That is about it, nice, so we now apply one of the predefined colortables, to better look like a DTM:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-nguZWP1jjaA/TkUQX5dGpYI/AAAAAAABTXE/RfcUKTyznzg/s1600/04_new_raster_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 227px;" src="http://1.bp.blogspot.com/-nguZWP1jjaA/TkUQX5dGpYI/AAAAAAABTXE/RfcUKTyznzg/s400/04_new_raster_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5639932111097341314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, to really get rid of the 0 novalues, we need to create rules to "hide" those part, else they will not appear transparent and overlay on other layers.&lt;br /&gt;We now added a button that will take the manually defined novalues and create transparent rules for them:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-Fv5Lb1pbx1s/TkUQwsonnBI/AAAAAAABTXM/5MvJaZoGW9A/s1600/05_new_raster_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://1.bp.blogspot.com/-Fv5Lb1pbx1s/TkUQwsonnBI/AAAAAAABTXM/5MvJaZoGW9A/s400/05_new_raster_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5639932537152707602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That is what we wanted to have. Just remember to export the style to have the same name as your raster map and the extension &lt;span style="font-weight:bold;"&gt;.sld&lt;/span&gt;, and you are good to go.&lt;br /&gt;&lt;br /&gt;Also note that now we have select all/none and invert selection for rules, which get very handy when you need to move rules up and down.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5729181124298548781?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5729181124298548781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5729181124298548781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5729181124298548781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5729181124298548781'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/08/small-enhancement-in-single-band-raster.html' title='Small enhancement in single band raster styling'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-wnFs5VR2G4U/TkUPOaNTJAI/AAAAAAABTWs/yIDjW-TUsRM/s72-c/01_new_raster_style.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1340249229601464677</id><published>2011-07-09T20:33:00.004+02:00</published><updated>2011-08-20T08:39:31.619+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='ercp'/><category scheme='http://www.blogger.com/atom/ns#' term='trimble'/><category scheme='http://www.blogger.com/atom/ns#' term='phoneme'/><title type='text'>eRCP, windows mobile 6, phoneMe, J9 fruit salad</title><content type='html'>I was asked to investigate a &lt;a href="http://www.geopaparazzi.eu/"&gt;geopaparazzi&lt;/a&gt; port on &lt;a href="http://www.trimble.com/junosc.shtml"&gt;Trimble Juno SC&lt;/a&gt;. Well, obviously it is not Android. But not only that, it is also not open source at all. In fact it is one of the closest source situations I have been in many years. Anyways, while investigating all the .Net and C# and gps apis, I also gave a look at a project I fell in love with long time ago, but never really had the possibility to try: &lt;a href="http://eclipse.org/ercp/"&gt;eRCP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To be honest the project looked quite dead and it took me a really long time to figure out the current way to do things best.&lt;br /&gt;&lt;br /&gt;The best thing right now is to download the &lt;a href="http://www.eclipse.org/downloads/packages/pulsar-mobile-developers/heliossr2"&gt;Pulsar eclipse IDE project&lt;br /&gt;&lt;/a&gt; and install the ERCP SDK through the update site, which now is: &lt;a href="http://www.eclipse.org/ercp/pulsar"&gt;http://www.eclipse.org/ercp/pulsar&lt;/a&gt;. At that point the sdk is installed.&lt;br /&gt;&lt;br /&gt;At that point the docs tell to go under preferences-&amp;gt;target platform and define a new target platform based on a new eRCP template. That will take the internal sdk and load it as target platform to develop against. Well, later I found out that it didn't work for me.&lt;br /&gt;What worked instead was to download:&lt;br /&gt;- the &lt;a href="http://www.eclipse.org/downloads/download.php?file=/ercp/org.eclipse.ercp.sdk_20090806.zip"&gt;ercp sdk&lt;/a&gt;&lt;br /&gt;- the &lt;a href="http://www.eclipse.org/downloads/download.php?file=/ercp/eRCP-1.3-win32-x86-20090806.zip"&gt;win32 runtime&lt;/a&gt;&lt;br /&gt;- the &lt;a href="http://www.eclipse.org/downloads/download.php?file=/ercp/eRCP-1.3-wm6std-20090806.zip"&gt;windows mobile runtime&lt;/a&gt;&lt;br /&gt;and add those to the target platform configuration. At that point I was ready to develop.&lt;br /&gt;&lt;br /&gt;First thing I wanted to run the demo codes, that can be found in the ercp cvs at dev.eclipse.org.&lt;br /&gt;&lt;br /&gt;So simply create a cvs repo with:&lt;br /&gt;host = dev.eclipse.org&lt;br /&gt;repo path = /cvsroot/rt&lt;br /&gt;using anonymous user and browse the HEAD into the org.eclipse.ercp folder to checkout as a project the org.eclipse.ercp.app application. That way you can run the example applications on your windows pc.&lt;br /&gt;&lt;br /&gt;Obviously you want to run them on the mobile devide. Ok, that was trickier.&lt;br /&gt;&lt;br /&gt;First thing you need to upload top the device (let's say in the root folder) the eRCP folder that can be found inside the windows mobile runtime downloaded before. That one contains also the example runner files.&lt;br /&gt;&lt;br /&gt;The few examples found all make use of the &lt;a href="http://en.wikipedia.org/wiki/IBM_J9"&gt;J9 IBM environment&lt;/a&gt; to run the eRCP demos. Well, that one is not open source and also not free right now. But it seemed the only possible way to go. I tried to use the J9 bundle that gvSig mobile is using but was not successful. Being in need to really know if eRCP is a way to go, I finally decided to buy the J9 environment (I hate to buy things when I don't even know if I will ever need them!). Once bought, I installed it on the Juno and was looking forward to see the examples work.&lt;br /&gt;&lt;br /&gt;Well, that also didn't happen. The launcher crashed and I was getting more and more frustrated. But I spent money and now it HAD to work. So I started to search for solutions for the J9 crashes.&lt;br /&gt;&lt;br /&gt;That was the moment when the following two blog posts came in my way:&lt;br /&gt;&lt;a href="http://jmj-eclipse.blogspot.com/2009/09/phoneme-advanced-and-eswt-running-under.html"&gt;Phoneme advanced and eSWT Running Under x86 Windows &lt;/a&gt;&lt;br /&gt;&lt;a href="http://jmj-eclipse.blogspot.com/2009/10/running-ercp-with-phoneme-advanced-on.html"&gt;Running eRCP with Phoneme Advanced on your mobile phone&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This man, apart of writing amazing posts, made me feel stupid for having bought something I didn't want (I deserve it), but also really solved my issues.&lt;br /&gt;&lt;br /&gt;From the &lt;a href="http://davy.preuveneers.be/phoneme/"&gt;phoneme&lt;/a&gt; I donwloaded the &lt;a href="http://davy.preuveneers.be/phoneme/public/dist/Foundation_Profile-phoneme_advanced_mr2_b168-win32_arm_wm6-bin-rev20547.cab"&gt;right cab&lt;/a&gt;, uploaded it to the juno and installed it.&lt;br /&gt;&lt;br /&gt;I then had to change the launcher links of the examples a bit from:&lt;br /&gt;&lt;br /&gt;37#"\Program Files\J9\FOUN10\bin\j9.exe" -jcl:foun10 -cp \eRCP\startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ercp.eworkbench.eWorkbench -console&lt;br /&gt;&lt;br /&gt;to:&lt;br /&gt;&lt;br /&gt;37#"\Programmi\pMEA FP\bin\cvm.exe" -Djava.specification.name="J2ME Foundation Specification" -cp \eRCP\startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ercp.eworkbench.eWorkbench -consoleLog&lt;br /&gt;&lt;br /&gt;And it finally worked!! Being an RCP developer for the uDig project I really love the eRCP approach. Now I just have to understand how to take pictures in windows mobile from eRCP and then I am really happy.&lt;br /&gt;&lt;br /&gt;I hope this can help someone else to don't lose maoney and time in trying just to make some demo code run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1340249229601464677?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1340249229601464677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1340249229601464677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1340249229601464677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1340249229601464677'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/07/ercp-windows-mobile-6-phoneme-j9-fruit.html' title='eRCP, windows mobile 6, phoneMe, J9 fruit salad'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3333860412734639780</id><published>2011-07-02T18:09:00.005+02:00</published><updated>2011-11-07T11:33:06.520+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><category scheme='http://www.blogger.com/atom/ns#' term='oms3'/><title type='text'>On your marks, get set... spatial toolbox on the line</title><content type='html'>Doing the last piece of migration JGrass into uDig, i.e. the Spatial Toolbox (aka. OmsBox) has been a lot of pain. One of those things in which the last 2% cost you almost as much as the 98% before. &lt;br /&gt;We have been using the toolbox in testing now almost half a year now and finally today the last bits have been placed in the proper locations:&lt;br /&gt;&lt;br /&gt;* the PSC has reviewed and accepted my plugin&lt;br /&gt;* the code is inside the main uDig repository&lt;br /&gt;* the libraries needed have been sorted out&lt;br /&gt;* a new release of jgrasstools has been made to be aligned with the uDig libs (0.7.1)&lt;br /&gt;&lt;br /&gt;and...&lt;br /&gt;&lt;br /&gt;* the uDig help page that is required by the heavy metal Jody Garnett reviewer (thanks for helping) is also there. It can be found &lt;a href="http://udig.refractions.net/confluence/display/EN/Introduction+to+the+Spatial+Toolbox"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tomorrow we should be able to tag a snapshot release and on tuesday we should have the release ready for the Osgeo DVD. I think I will soon sleep much better...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-6gC_PDcjGTY/Tg9EwUIADcI/AAAAAAABTPg/EGZ87ggolpI/s1600/omsbox.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://3.bp.blogspot.com/-6gC_PDcjGTY/Tg9EwUIADcI/AAAAAAABTPg/EGZ87ggolpI/s400/omsbox.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5624790056435715522" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3333860412734639780?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3333860412734639780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3333860412734639780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3333860412734639780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3333860412734639780'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/07/on-your-marks-get-set-spatial-toolbox.html' title='On your marks, get set... spatial toolbox on the line'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-6gC_PDcjGTY/Tg9EwUIADcI/AAAAAAABTPg/EGZ87ggolpI/s72-c/omsbox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7680934783418081620</id><published>2011-06-11T12:41:00.005+02:00</published><updated>2011-11-07T11:33:06.542+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lidar'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>LIDAR data &amp; jgrasstools and uDig</title><content type='html'>Well, we always like to look at things from different perspectives. And we are really fast when we use our own tools, that we can bend and change to our needs.&lt;br /&gt;&lt;br /&gt;We are slowly bringing some las reader we wrote into the jgrasstools family, so that we then can add some analysis support. Sure thing nothing to do with the great &lt;a href="http://liblas.org/"&gt;laslib&lt;/a&gt; project, but it is handy for us to be able to certain tasks without dependencies and most of all be able to chain results into other modules directly.&lt;br /&gt;&lt;br /&gt;So a first test takes 22M of points, filter them down to 12M (only first impulse) and splits them over 1M points shapefiles. I tried to write one single shapefile, but the geotools shp writer simply froze :) Will have to investigate further.&lt;br /&gt;&lt;br /&gt;One thing uDig is really one of the best at, is to visualize HUGE amount of features. I am always amazed to see how well it does in that. Here 10M points loaded after properly stiling them by quantiles:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-chsHfFcOFDM/TfNIi9s-GkI/AAAAAAABTDw/52PprNJqZBU/s1600/udig_lidarshp0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://3.bp.blogspot.com/-chsHfFcOFDM/TfNIi9s-GkI/AAAAAAABTDw/52PprNJqZBU/s400/udig_lidarshp0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616912925777074754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, it already look nice for a first test. Zooming in it looks even better:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-H88dyhs-790/TfNJEXEcxiI/AAAAAAABTD4/Qd16_WCyQR8/s1600/udig_lidarshp.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://3.bp.blogspot.com/-H88dyhs-790/TfNJEXEcxiI/AAAAAAABTD4/Qd16_WCyQR8/s400/udig_lidarshp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5616913499522123298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, yes, shapefiles are maybe not the best format to use in this case, but hey, I really enjoy to play around with them to have a better feeling about what I am dealing with.&lt;br /&gt;&lt;br /&gt;Well, this is a starting point. Let's see were it leads to...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7680934783418081620?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7680934783418081620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7680934783418081620' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7680934783418081620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7680934783418081620'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/06/lidar-data-jgrasstools-and-udig.html' title='LIDAR data &amp; jgrasstools and uDig'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-chsHfFcOFDM/TfNIi9s-GkI/AAAAAAABTDw/52PprNJqZBU/s72-c/udig_lidarshp0.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3033876755331761416</id><published>2011-05-24T20:37:00.005+02:00</published><updated>2011-11-07T16:09:56.291+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grass'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='oms3'/><title type='text'>OMS3 Grass modules Wrapper at Prague GRASS-Hackfest</title><content type='html'>Last week I took part at the &lt;a href="http://grass.osgeo.org/wiki/GRASS_Community_Sprint_Prague_2011"&gt;GRASS Community Sprint&lt;/a&gt;. As every sprint I took part at, it has been an amazing experience and it has been good to catch up with "old" grass developers I knew and to get introduced to some really great "new" developers.&lt;br /&gt;&lt;br /&gt;At the sprint I wanted to wrap all the grass modules in an OMS3/jgrasstools wrapper. Well, I had only two days to code on it, so I am not exactly where I wanted to, but lot's of stuff is already working and I can show you some stuff already loaded in the OmsBox:&lt;br /&gt;&lt;br /&gt;Running r.watershed from within uDig:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-K19BZPfGXT4/Tdv8Z5Ja4sI/AAAAAAABS7E/Ej3-4hXcWQw/s1600/grass_watershed_run.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://3.bp.blogspot.com/-K19BZPfGXT4/Tdv8Z5Ja4sI/AAAAAAABS7E/Ej3-4hXcWQw/s400/grass_watershed_run.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5610355282587345602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-mIFRUz-C1q0/Tdv8qRZPOLI/AAAAAAABS7M/EqPajLwu-Ec/s1600/grass_watershed_result.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 268px;" src="http://2.bp.blogspot.com/-mIFRUz-C1q0/Tdv8qRZPOLI/AAAAAAABS7M/EqPajLwu-Ec/s400/grass_watershed_result.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5610355563974047922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you want to know what OMS3, jgrasstools and the omsbox are, you are invited to have a &lt;a href="http://www.slideshare.net/moovida/linking-environmental-models-together-to-make-the-world-a-better-place-the-gis-approach"&gt;look at the presentation I gave&lt;/a&gt; at the &lt;a href="http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2011"&gt;Geoinformatics FCE CTU 2011&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While in the screenshots you can see the modules inside the OmsBox (just so it looks nice), the result is a very small java package that depends on no big library or toolbox, so that the whole java world can take advantage of this. Amen!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I would also like to thank personally the sponsors that helped out:&lt;br /&gt;GFOSS.it Associazione Italiana per l'Informazione Geografica Libera&lt;br /&gt;Stefan Sylla, sylla-consult, Frankfurt, Germany&lt;br /&gt;R3 GIS, Merano, Italy&lt;br /&gt;FOSSGIS e.V., D-A-CH&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3033876755331761416?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3033876755331761416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3033876755331761416' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3033876755331761416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3033876755331761416'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/05/oms3-grass-modules-wrapper-at-prague.html' title='OMS3 Grass modules Wrapper at Prague GRASS-Hackfest'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-K19BZPfGXT4/Tdv8Z5Ja4sI/AAAAAAABS7E/Ej3-4hXcWQw/s72-c/grass_watershed_run.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5168464122179766239</id><published>2011-05-18T07:48:00.007+02:00</published><updated>2011-10-06T09:55:50.378+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='restructeredtext'/><title type='text'>rst2pdf for presentations: installations and svg usage</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Lately I tried out &lt;a href="http://docutils.sourceforge.net/rst.html"&gt;reST&lt;/a&gt; after a hint of good man Paolo Corti.&lt;br /&gt;&lt;br /&gt;After some startup problems I am now really satified with the results. Amazing over all the possibility to embed svg files instead of images. My diagrams now really rock!&lt;br /&gt;&lt;br /&gt;Not being a Python guy I had some problems to install rst2pdf. Well, in linux it is easy like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo apt-get install python-pip python-virtualenv&lt;br /&gt;sudo apt-get install python-matplotlib python-scitools&lt;br /&gt;sudo easy_install rst2pdf&lt;br /&gt;&lt;/span&gt;and the dev file if they are not installed already&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;sudo apt-get install python2.7-dev&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;but in windows I had several problems with error messages. I will have to try again and update here the procedure.&lt;br /&gt;&lt;br /&gt;When using svg images, I was getting missleading errors which then got solved by running with the &lt;span style="font-weight: bold;"&gt;-e inkscape&lt;/span&gt; switch.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;rst2pdf -s 2011_05_19_Geoinformatics_FCE_CTU.style -e inkscape 2011_05_19_Geoinformatics_FCE_CTU.rst&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes &lt;a href="http://geo.fsv.cvut.cz/gwiki/Landa"&gt;Martin&lt;/a&gt;, the first presentation done with reST is for you :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;UPDATE 2011/10/06&lt;br /&gt;&lt;br /&gt;The workflow to install rst2pdf on a windows machine was the following:&lt;br /&gt;&lt;br /&gt;&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;- install python 2.7.2 (for 32 bits for God's sake!!!)&lt;br /&gt;- follow http://pypi.python.org/pypi/setuptools#windows&lt;br /&gt;- (install mingw???)&lt;br /&gt;- easy_install.exe PIL&lt;br /&gt;- easy_install.exe rst2pdf&lt;br /&gt;- install inkscape&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I wasn't able to install matplotlib so that it would work in rst2pdf on windows up to this point.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;UPDATE 2011/09/02&lt;br /&gt;&lt;br /&gt;Due to a strange docutils-python mismatch, rst2pdf is no longer working for me, because one of the used functions changed signature.&lt;br /&gt;&lt;br /&gt;The error I get is:&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;&lt;br /&gt;  File "/usr/local/bin/rst2pdf", line 9, in &lt;module&gt;&lt;br /&gt;&lt;br /&gt;    load_entry_point('rst2pdf==0.16', 'console_scripts', 'rst2pdf')()&lt;br /&gt;&lt;br /&gt;  File "/usr/local/lib/python2.7/dist-packages/rst2pdf-0.16-py2.7.egg/rst2pdf/createpdf.py", line 1452, in main&lt;br /&gt;&lt;br /&gt;    numbered_links=options.numbered_links,&lt;br /&gt;&lt;br /&gt;  File "/usr/local/lib/python2.7/dist-packages/rst2pdf-0.16-py2.7.egg/rst2pdf/createpdf.py", line 169, in __init__&lt;br /&gt;&lt;br /&gt;    get_language (self.language)&lt;br /&gt;&lt;br /&gt;TypeError: get_language() takes exactly 2 arguments (1 given)&lt;br /&gt;&lt;/module&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The solutions was given by the author of rst2pdf and consists in opening the file &lt;span style="font-weight: bold;"&gt;createpdf.py&lt;/span&gt; (which in my case is in &lt;br /&gt;&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;/usr/local/lib/python2.7/dist-packages/rst2pdf-0.16-py2.7.egg/rst2pdf/createpdf.py&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;) and add at line 66 (right below the line &lt;br /&gt;&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;from docutils.transforms import Transform&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;) the following lines:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;import docutils&lt;br /&gt;&lt;br /&gt;if docutils.__version__ &amp;gt;= '0.8':&lt;br /&gt;&lt;br /&gt;    orig_func = get_language&lt;br /&gt;&lt;br /&gt;    def get_language(arg1):&lt;br /&gt;&lt;br /&gt;        return orig_func(arg1, None)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5168464122179766239?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5168464122179766239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5168464122179766239' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5168464122179766239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5168464122179766239'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/05/rst2pdf-for-presentations-installations.html' title='rst2pdf for presentations: installations and svg usage'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7960203651927510283</id><published>2011-05-16T09:34:00.002+02:00</published><updated>2011-11-07T16:09:56.300+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><category scheme='http://www.blogger.com/atom/ns#' term='oms3'/><title type='text'>The first release of jgrasstools is out</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-G2Owxtx49gI/TdDT7ndkz_I/AAAAAAABS60/gajq2bPTDHo/s1600/jgrassgears.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 141px; height: 141px;" src="http://1.bp.blogspot.com/-G2Owxtx49gI/TdDT7ndkz_I/AAAAAAABS60/gajq2bPTDHo/s400/jgrassgears.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5607214557235040242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The first official release of JGrasstools has been released as 0.7.0.&lt;br /&gt;&lt;br /&gt;We have worked about a year to prepare not only the algorithms contained in this release, but also the supporting the evolution of the OMS3 framework to gain the main objective of the JGrasstools library: the possibility to link together models in a most possible flexible way, being it along a timeline or in standalone mode, being it in complex and recursive way or in simple standalone mode.&lt;br /&gt;&lt;br /&gt;JGrasstools represents the effort to extract the processing power of JGrass to library level.&lt;br /&gt;&lt;br /&gt;For documentation, downloads, you can read the whole story at the &lt;a href="http://code.google.com/p/jgrasstools/wiki/ReleaseNotes#version_0.7.0_(released_2011-05-16)"&gt;release notes page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7960203651927510283?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7960203651927510283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7960203651927510283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7960203651927510283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7960203651927510283'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/05/first-release-of-jgrasstools-is-out.html' title='The first release of jgrasstools is out'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-G2Owxtx49gI/TdDT7ndkz_I/AAAAAAABS60/gajq2bPTDHo/s72-c/jgrassgears.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1586178999124334563</id><published>2011-05-08T00:11:00.006+02:00</published><updated>2011-11-07T16:09:56.285+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='nettools'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo4w'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>NetTools 1.0.0 in Osgeo4W flush</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-sX3-7RRRc1k/TcXHp7p7KkI/AAAAAAABS6k/eij8kGAwFjk/s1600/net256.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 262px; height: 262px;" src="http://2.bp.blogspot.com/-sX3-7RRRc1k/TcXHp7p7KkI/AAAAAAABS6k/eij8kGAwFjk/s400/net256.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5604104834534550082" /&gt;&lt;/a&gt;&lt;br /&gt;We have been working on the nettools for udig a while now. The aim is to have tools to handle water supply systems and stromwater networks.&lt;br /&gt;&lt;br /&gt;Well the first part is out. Epanet inside uDig for water supply systems.&lt;br /&gt;&lt;br /&gt;It gives the possibility to create networks inside the GIS&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-8P5d0Dz00sM/TcXFIpV2jeI/AAAAAAABS6M/6qCuVYloswc/s1600/epa_01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 239px;" src="http://4.bp.blogspot.com/-8P5d0Dz00sM/TcXFIpV2jeI/AAAAAAABS6M/6qCuVYloswc/s400/epa_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5604102063659584994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And has wizards to run simulations&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-xaweTpxHwZU/TcXFetj-AcI/AAAAAAABS6U/qqrsV_Od98I/s1600/epa_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://4.bp.blogspot.com/-xaweTpxHwZU/TcXFetj-AcI/AAAAAAABS6U/qqrsV_Od98I/s400/epa_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5604102442749657538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It has also been used in developing countries already, for planning and training purposes&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-ZfbasHDTKOw/TcXFun3qTVI/AAAAAAABS6c/tNRADYQI_eU/s1600/epa_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://4.bp.blogspot.com/-ZfbasHDTKOw/TcXFun3qTVI/AAAAAAABS6c/tNRADYQI_eU/s400/epa_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5604102716099546450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Guess what is missing as usual? The manual... I really hope someone gets that one done. Downside is that for now the tools have to be used by trying them and asking for help in the udig mailinglist.&lt;br /&gt;&lt;br /&gt;For now the nettools are available in the &lt;a href="http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe"&gt;Osgeo4W installer&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1586178999124334563?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1586178999124334563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1586178999124334563' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1586178999124334563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1586178999124334563'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/05/nettools-100-in-osgeo4w.html' title='NetTools 1.0.0 in Osgeo4W flush'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-sX3-7RRRc1k/TcXHp7p7KkI/AAAAAAABS6k/eij8kGAwFjk/s72-c/net256.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2356530308114041604</id><published>2011-04-27T14:01:00.000+02:00</published><updated>2011-04-27T14:03:22.814+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Open the properties view</title><content type='html'>Why do I always forget? Need to nail it down.&lt;br /&gt;&lt;br /&gt;PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.ui.views.PropertySheet");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2356530308114041604?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2356530308114041604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2356530308114041604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2356530308114041604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2356530308114041604'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/04/open-properties-view.html' title='Open the properties view'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3574066372152888611</id><published>2011-03-29T22:26:00.006+02:00</published><updated>2011-04-01T09:26:41.014+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo4w'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>osgeo4w for impaired networks</title><content type='html'>There has been some discussion going on about the osgeo download server (http://download.osgeo.org) being not reachable from certain networks (for example Italy's main provider Telecom, but also providers from other countries). This also means that the osgeo4w installer is not working right now, even if there is a mirror server (http://download2.osgeo.org) available that would be reachable from those networks (at least the Italian one).&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://trac.osgeo.org/osgeo4w/wiki/MattWilkie"&gt;Matt Wilkie&lt;/a&gt;, there is now a tested (not as my recent desperate failures) way to get to update the osgeo4w packages. It is a bit less userfriendly, since commandline based, but I am sure many will appreciate. I did. Thanks Matt, also for the following instructions!&lt;br /&gt;&lt;br /&gt;First some definitions:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;%OSGEO4W_ROOT%&lt;/span&gt; refers to the installation folder of osgeo4w. In my case the folder is &lt;span style="font-weight:bold;"&gt;C:\OSGeo4W&lt;/span&gt;, which is the default.&lt;br /&gt;&lt;br /&gt;Instructions:&lt;br /&gt;&lt;br /&gt;1) download the file: &lt;a href="http://trac.osgeo.org/osgeo4w/export/1170/trunk/apt/apt.py"&gt;apt.py&lt;br /&gt;&lt;/a&gt; and save it to &lt;span style="font-weight:bold;"&gt;%OSGEO4W_ROOT%\bin\apt.py&lt;/span&gt;. If the file already exist, you can skip this step.&lt;br /&gt;&lt;br /&gt;2) Create in the same folder as 1) a file named apt.bat, which contains the following line:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;@python "%OSGEO4W_ROOT%\bin\apt.py" %*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3) Open the Osgeo4w command shell (it can be found in the program menu under osgeo4w) and inside that run the commands:&lt;br /&gt;&lt;br /&gt;3.1) To update the list of packages:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;apt --mirror=http://download2.osgeo.org/osgeo4w update &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3.2) To get the list of available packages:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;apt --mirror=http://download2.osgeo.org/osgeo4w available&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3.3) To install a package:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;apt --mirror=http://download2.osgeo.org/osgeo4w packagename&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Full command options: &lt;a href="http://trac.osgeo.org/osgeo4w/wiki/pkg-apt"&gt;http://trac.osgeo.org/osgeo4w/wiki/pkg-apt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I really hope that can help someone to get its preferred osgeo4w application until the eembargo is over.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: the --mirror instruction is necessary only in the first command run&lt;br /&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;&lt;br /&gt;TROUBLESHOOTING&lt;br /&gt;&lt;br /&gt;There might be a couple of problems:&lt;br /&gt;1) python is not installed in your osgeo4w installation (WHAT, NO PYTHON!!!!!???? Where do you live!?!?!? In a java world!??!?! :) ). In that case you will have to install it and then change the &lt;span style="font-weight:bold;"&gt;apt.bat&lt;/span&gt; to refer to your python installation.&lt;br /&gt;In my case I had a python installation on my pc, but non in the osgeo4w installation, so I changed the apt.bat file to be:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;C:\Python27\python "%OSGEO4W_ROOT%\bin\apt.py" %*&lt;/span&gt;&lt;br /&gt;After that everything worked flawless.&lt;br /&gt;&lt;br /&gt;Another option is the &lt;a href="http://code.google.com/p/maphew/wiki/OsgeoFromScratch"&gt;http://code.google.com/p/maphew/wiki/OsgeoFromScratch&lt;/a&gt; documentation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2) If the apt update didn't work, try first to run:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;apt --mirror=http://download2.osgeo.org/osgeo4w setup&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I can't remember if I ran it or not and now it is too late to tell if that did unlock anythig in the begin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3574066372152888611?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3574066372152888611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3574066372152888611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3574066372152888611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3574066372152888611'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/osgeo4w-for-impaired-networks.html' title='osgeo4w for impaired networks'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4879026173422056866</id><published>2011-03-24T08:47:00.003+01:00</published><updated>2011-11-07T16:09:56.296+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><title type='text'>geopaparazzi 2.3.0 out - the osmdroid integration</title><content type='html'>Today we released geopaparazzi 2.3.0 to the android market.&lt;br /&gt;&lt;br /&gt;This release bring a ton of news and fixes. The two most important are for sure the fixing of some GPS issues, making the gps now faster and more stable. The other is the integration of the &lt;a href="http://code.google.com/p/osmdroid/"&gt;osmdroid&lt;/a&gt; project as the mapping engine for geopaparazzi. Since the mapping engine needed to get professional finally, we decided to do it properly, and the osmdroid project does that.&lt;br /&gt;&lt;br /&gt;Another nifty addition is the support for bookmarks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-JN0FjbY-hk0/TYr4KqvBlmI/AAAAAAABR4A/a4_UwLA5UvU/s1600/35_added_bookmark.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://4.bp.blogspot.com/-JN0FjbY-hk0/TYr4KqvBlmI/AAAAAAABR4A/a4_UwLA5UvU/s400/35_added_bookmark.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5587551149860427362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Full release notes:&lt;br /&gt;&lt;br /&gt;New features:&lt;br /&gt;&lt;br /&gt;* integration of the osmdroid project (brings multitouch, minimap, scalebar, enhanced rendering, multiple tile sources...)&lt;br /&gt;* enhanced tools in slider over map&lt;br /&gt;* support for bookmarks&lt;br /&gt;&lt;br /&gt;Enhancements:&lt;br /&gt;&lt;br /&gt;* enhanced handling of gps status icon&lt;br /&gt;* updated documentation at: www.geopaparazzi.eu&lt;br /&gt;* icons now are properly created for various densities&lt;br /&gt;* possibility to delete notes and bookmarks on the visible map&lt;br /&gt;* better contrast color for chart viewer&lt;br /&gt;* labels properties for better overlay of poi layers&lt;br /&gt;* select/unselect all on data lists &lt;br /&gt;&lt;br /&gt;Fixes:&lt;br /&gt;&lt;br /&gt;* fix for logs not showing up on map at logging start&lt;br /&gt;* new project was landing in backed up folder&lt;br /&gt;* proper distance calculation in 3d&lt;br /&gt;* gpx support also for gpx 1.0, not ony 1.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4879026173422056866?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4879026173422056866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4879026173422056866' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4879026173422056866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4879026173422056866'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/geopaparazzi-230-out-osmdroid.html' title='geopaparazzi 2.3.0 out - the osmdroid integration'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JN0FjbY-hk0/TYr4KqvBlmI/AAAAAAABR4A/a4_UwLA5UvU/s72-c/35_added_bookmark.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4850097458079619680</id><published>2011-03-17T16:48:00.005+01:00</published><updated>2011-10-19T12:21:10.952+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>android and the density of icons with inkscape</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;When android started to support multiple screen densities, geopaparazzi started to have some problems with blur icons on different devices. I was delaying the creation of the icons at the density for gigh/medium/low density devices... because I didn't know exactly how to do them :)&lt;br /&gt;&lt;br /&gt;Well, recently I started the the new toolbox slider for geopaparazzi&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Y0cm8PLL4wI/TYIxCF_tJ7I/AAAAAAABR3o/vYt4jx9JKBo/s1600/35_added_bookmark.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5585080399931713458" src="http://2.bp.blogspot.com/-Y0cm8PLL4wI/TYIxCF_tJ7I/AAAAAAABR3o/vYt4jx9JKBo/s400/35_added_bookmark.png" style="cursor: hand; cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 267px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and those were looking really ugly at the wrong densities, so I had to face that density thing.&lt;br /&gt;&lt;br /&gt;This is how I did it with inkscape, after studying some icons done with the &lt;a href="http://android-ui-utils.googlecode.com/hg/asset-studio/dist/icons-menu.html"&gt;amazing asset studio&lt;/a&gt;. As I realized for menu icons for example, they generate for the different densities (assume squares):&lt;br /&gt;&lt;br /&gt;hdpi: 72 pixels at 72 dpi&lt;br /&gt;mdpi: 48 pixels at 72 dpi&lt;br /&gt;ldpi: 36 pixels at 72 dpi&lt;br /&gt;&lt;br /&gt;With that info my workflow was the following for an icon that I needed to be of size in android = 32 dip:&lt;br /&gt;&lt;br /&gt;1) define the sizes I need, assuming that the 32 dip are well fitting with the mdpi mode:&lt;br /&gt;hdpi: 48 pixels at 72 dpi&lt;br /&gt;mdpi: 32 pixels at 72 dpi&lt;br /&gt;ldpi: 24 pixels at 72 dpi&lt;br /&gt;&lt;br /&gt;2) inside of &lt;a href="http://inkscape.org/"&gt;inkscape&lt;/a&gt;, were I created all the icons, I resize my images to be &lt;span style="font-weight: bold;"&gt;48, 32, 24 pt&lt;/span&gt;. Please note it is &lt;span style="font-weight: bold;"&gt;pt&lt;/span&gt;, non &lt;span style="font-weight: bold;"&gt;px&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-DHaCbsEsYzo/TYI5X0fMTII/AAAAAAABR3w/bmsHbyyzjT8/s1600/android_icons_01.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5585089569282083970" src="http://4.bp.blogspot.com/-DHaCbsEsYzo/TYI5X0fMTII/AAAAAAABR3w/bmsHbyyzjT8/s400/android_icons_01.png" style="cursor: hand; cursor: pointer; display: block; height: 298px; margin: 0px auto 10px; text-align: center; width: 311px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) export the images as icons for the different sets in hdpi, mdpi and ldpi in the android app.&lt;br /&gt;&lt;br /&gt;an believe it or not, now I have very clear and smooth icons in my application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------&lt;br /&gt; Update 1:&lt;br /&gt;For an Olitab using 320x320pt at 72 dpi looks good&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4850097458079619680?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4850097458079619680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4850097458079619680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4850097458079619680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4850097458079619680'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/android-and-density-of-icons-with.html' title='android and the density of icons with inkscape'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Y0cm8PLL4wI/TYIxCF_tJ7I/AAAAAAABR3o/vYt4jx9JKBo/s72-c/35_added_bookmark.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2149014399609696289</id><published>2011-03-11T14:16:00.004+01:00</published><updated>2011-11-07T16:09:56.289+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='raster'/><title type='text'>uDig-dev, uDig's evil brother</title><content type='html'>Since atm lot's of development is going on in the uDig world, I decided to create a uDig-dev package for osgeo4w:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-1pGP_uxPqF4/TXohKaKVjjI/AAAAAAABR3M/Qxj0Ga0YWyw/s1600/udig-dev.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 132px;" src="http://3.bp.blogspot.com/-1pGP_uxPqF4/TXohKaKVjjI/AAAAAAABR3M/Qxj0Ga0YWyw/s400/udig-dev.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5582811150784237106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This one will not be a stable version, but will contain all cutting edge new features.&lt;br /&gt;&lt;br /&gt;One example? The georeferencing tool:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-LZltHULEKvQ/TXohdnO5FYI/AAAAAAABR3U/gZrVzSUuvmc/s1600/georeferencing.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://4.bp.blogspot.com/-LZltHULEKvQ/TXohdnO5FYI/AAAAAAABR3U/gZrVzSUuvmc/s400/georeferencing.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5582811480710518146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But read about it &lt;a href="http://how2map.blogspot.com/2011/03/georeferencing-for-udig-difference.html"&gt;on Jody's post&lt;/a&gt;. Oh man, these are fun times :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2149014399609696289?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2149014399609696289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2149014399609696289' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2149014399609696289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2149014399609696289'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/udig-dev-udigs-evil-brother.html' title='uDig-dev, uDig&apos;s evil brother'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1pGP_uxPqF4/TXohKaKVjjI/AAAAAAABR3M/Qxj0Ga0YWyw/s72-c/udig-dev.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6749631260603155963</id><published>2011-03-09T09:58:00.006+01:00</published><updated>2011-03-09T11:26:55.005+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>Mercurial and Git cheatsheet</title><content type='html'>We are using Git and Mercurial for many different projects. Apart of suffering often of confusion in command usage, I am still trying to figure out tricks and understand advanced features. here I will try to keep a cheatsheet uptodate. Corrections are welcome, as well as comments about how to fill in the gaps. Whatever comes in and makes sense, I will update the cheatsheet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;In this I am not trying to show how that git and hg are the same. I only want to show how common tasks could be done in the two versioning systems. Please be aware that (as some commented) this might create confusion, since there is no 100% same way to do things and branches, tags and whatever do not always have the same meaning in both worlds. So please be careful. I find the cheatsheet useful, so might others&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Discussion ongoing in the comments section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--- update 1: Wed Mar  9 11:22:54 CET 2011&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-jJOoIcxbiXk/TXdU2RYiw4I/AAAAAAABR1M/T_pbwi0e5FI/s1600/mercurial_git.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 365px; height: 400px;" src="http://1.bp.blogspot.com/-jJOoIcxbiXk/TXdU2RYiw4I/AAAAAAABR1M/T_pbwi0e5FI/s400/mercurial_git.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5582023554505032578" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6749631260603155963?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6749631260603155963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6749631260603155963' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6749631260603155963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6749631260603155963'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/mercurial-and-git-cheatsheet.html' title='Mercurial and Git cheatsheet'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-jJOoIcxbiXk/TXdU2RYiw4I/AAAAAAABR1M/T_pbwi0e5FI/s72-c/mercurial_git.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7742368818371842032</id><published>2011-03-07T14:38:00.006+01:00</published><updated>2011-03-07T14:49:18.249+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>Perhaps not everyone knows that... line tools in uDig</title><content type='html'>While adding some small tools to handle orientation and moving of features, I noticed that I didn't even remember that I had added the possibility to show a profile of a feature over a coverage (!!).&lt;br /&gt;&lt;br /&gt;So I though that if I don't know it perhaps many others might not know.&lt;br /&gt;&lt;br /&gt;So here some it is, select a feature and a coverage layer, and it will appear as operation:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-MAG6Q9j8AUw/TXThEhmMGnI/AAAAAAABRy0/0UAX2m3fN0Q/s1600/profile_from_shape.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/-MAG6Q9j8AUw/TXThEhmMGnI/AAAAAAABRy0/0UAX2m3fN0Q/s400/profile_from_shape.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5581333306073160306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have to handle lots of data and need to analyse them and move them around, the following tools might also be of use:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-EQk_iun3pQg/TXThb8BnZ7I/AAAAAAABRzA/fMu3m-Cus-A/s1600/line_tools_01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/-EQk_iun3pQg/TXThb8BnZ7I/AAAAAAABRzA/fMu3m-Cus-A/s400/line_tools_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5581333708304508850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View line orientation:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-fTOkFmcMVG4/TXThlvDHf2I/AAAAAAABRzI/FSrkFTMNXJo/s1600/line_tools_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/-fTOkFmcMVG4/TXThlvDHf2I/AAAAAAABRzI/FSrkFTMNXJo/s400/line_tools_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5581333876619837282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Invert orientation of any 2d geometry:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Mrb6wpCclWM/TXThycy2msI/AAAAAAABRzQ/zNt-d5R-ee0/s1600/line_tools_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/-Mrb6wpCclWM/TXThycy2msI/AAAAAAABRzQ/zNt-d5R-ee0/s400/line_tools_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5581334095058082498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And moving features one layer up or down:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-TszBh7SBusU/TXTh8gjifcI/AAAAAAABRzY/JE3RcTIs8oo/s1600/line_tools_05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://3.bp.blogspot.com/-TszBh7SBusU/TXTh8gjifcI/AAAAAAABRzY/JE3RcTIs8oo/s400/line_tools_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5581334267866283458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To help in being really fast, here the shortcuts:&lt;br /&gt;&lt;br /&gt; - move features a layer up: Alt-Shift-W&lt;br /&gt; - move features a layer down: Alt-Shift-Z&lt;br /&gt; - view line orientation: Alt-Shift-A&lt;br /&gt; - invert geometry orientation: Alt-Shift-S&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7742368818371842032?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7742368818371842032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7742368818371842032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7742368818371842032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7742368818371842032'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/perhaps-not-everyone-knows-that-line.html' title='Perhaps not everyone knows that... line tools in uDig'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MAG6Q9j8AUw/TXThEhmMGnI/AAAAAAABRy0/0UAX2m3fN0Q/s72-c/profile_from_shape.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4822805407125055354</id><published>2011-03-05T14:33:00.003+01:00</published><updated>2011-11-07T16:09:56.294+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='osgeo4w'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>BeeGIS in osgeo4w</title><content type='html'>As promised we now have also BeeGIS coming with the &lt;a href="http://trac.osgeo.org/osgeo4w/"&gt;osgeo for windows installer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Again, want to try it out? Just &lt;a href="http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe"&gt;run the installer here&lt;/a&gt; and search for BeeGIS in the advanced install. The BeeGIS extentions will appear in the uDig istallation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4822805407125055354?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4822805407125055354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4822805407125055354' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4822805407125055354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4822805407125055354'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/beegis-in-osgeo4w.html' title='BeeGIS in osgeo4w'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7129735681418453533</id><published>2011-03-04T18:37:00.003+01:00</published><updated>2011-03-04T18:43:04.358+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgeo'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>uDig in osgeo4w again with 1.2.1</title><content type='html'>After some nice user making me notice that I was laging 3 years behind with the uDig version in the &lt;a href="http://trac.osgeo.org/osgeo4w/"&gt;osgeo for windows installer&lt;/a&gt;, I wrapped myself up and with the gentle help of the osgeo guys (I had 2 tickets open since 3 years :( ) I got back on track.&lt;br /&gt;&lt;br /&gt;The result is that uDig 1.2.1 is available in the osgeo4w installer. I really like the installer of osgeo4w and I will definitely put also BeeGIS as an installation option into it.&lt;br /&gt;&lt;br /&gt;Want to try it out? Just &lt;a href="http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe"&gt;run the installer here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7129735681418453533?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7129735681418453533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7129735681418453533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7129735681418453533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7129735681418453533'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/03/udig-in-osgeo4w-again-with-121.html' title='uDig in osgeo4w again with 1.2.1'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4075945356433853583</id><published>2011-02-21T11:13:00.003+01:00</published><updated>2011-02-21T11:16:23.377+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp geotools'/><title type='text'>Geotools SWT/JFace module and its RCP integration</title><content type='html'>After some discussion in the geotools mailinglist about the possibility of a SWT port of the geotools swing module, &lt;a href="http://planetmayo.com/"&gt;Ian Mayo from the Debrief project&lt;/a&gt; funded the port. He also wanted the resulting port and documentation to be Open Sourced (thanks!). &lt;br /&gt;&lt;br /&gt;The result looks like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-MaNheNXFTgM/TWI7Gnrwh_I/AAAAAAABRvw/axiTmpuIm6Y/s1600/gtswt_rcp_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://3.bp.blogspot.com/-MaNheNXFTgM/TWI7Gnrwh_I/AAAAAAABRvw/axiTmpuIm6Y/s400/gtswt_rcp_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5576084273555867634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A tutorial adn the source code about how to get there &lt;a href="http://code.google.com/p/jgrasstools/wiki/GeotoolsSwtRcpIntegration"&gt;are here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4075945356433853583?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4075945356433853583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4075945356433853583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4075945356433853583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4075945356433853583'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/02/geotools-swtjface-module-and-its-rcp.html' title='Geotools SWT/JFace module and its RCP integration'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-MaNheNXFTgM/TWI7Gnrwh_I/AAAAAAABRvw/axiTmpuIm6Y/s72-c/gtswt_rcp_02.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3885924865351442433</id><published>2011-02-16T13:24:00.003+01:00</published><updated>2011-02-16T13:30:06.606+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mvn'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Copy Maven Dependency Tree jars</title><content type='html'>Well, it is the second time I need to get the jar on which a maven project depends on and copy them into a non-maven application. Sure &lt;span style="font-weight:bold;"&gt;mvn dependency:tree&lt;/span&gt; is your friend to see which jars you need to copy. And there are also maven tasks that can do the copy. But what if I want to copy them over without polluting the pom? I couldn't find a quick way (I am sure someone will tell me :)), so I created a groovy script that would do that for me. &lt;br /&gt;&lt;br /&gt;Here it is, change the path to the &lt;span style="font-weight:bold;"&gt;repo&lt;/span&gt;, change the path into which to copy to, and run the thing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// copy also source jars?&lt;br /&gt;def alsoSources = false;&lt;br /&gt;// copy also javadoc jars?&lt;br /&gt;def alsojavaDocs = false;&lt;br /&gt;// your maven repo path&lt;br /&gt;def repo = "/home/moovida/.m2/repository/"&lt;br /&gt;// path to which to copy them&lt;br /&gt;def copyPath = "/home/moovida/development/gt-swt-port-hg/rcp-gt-swt/libs/"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;def mvnCommand = "mvn dependency:tree";&lt;br /&gt;def proc = mvnCommand.execute();&lt;br /&gt;proc.waitFor();&lt;br /&gt;&lt;br /&gt;def output = proc.in.text;&lt;br /&gt;// clean out what we need&lt;br /&gt;def lista=[];&lt;br /&gt;def lines = output.split("\n");&lt;br /&gt;def depsList = [];&lt;br /&gt;def startIndex = -1;&lt;br /&gt;def endIndex = -1;&lt;br /&gt;for (int i = 0; i &amp;lt; lines.size(); i++){&lt;br /&gt;    def line = lines[i];&lt;br /&gt;    if(line.startsWith("[INFO] [dependency:tree]")){&lt;br /&gt;        startIndex = i + 1;&lt;br /&gt;        continue;&lt;br /&gt;    }&lt;br /&gt;    if(startIndex != -1 &amp;&amp; line.startsWith("[INFO] ----------")){&lt;br /&gt;        endIndex = i - 1&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    if(startIndex == -1){&lt;br /&gt;        continue;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    lista &amp;lt;&amp;lt; line;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;println "Search for:"&lt;br /&gt;lista.each{&lt;br /&gt;    println it&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;println "---------------------------------------"&lt;br /&gt;println "---------------------------------------"&lt;br /&gt;&lt;br /&gt;// find jars&lt;br /&gt;def basedir = new File(repo)&lt;br /&gt;def files = [];&lt;br /&gt;basedir.eachDirRecurse () { dir -&amp;gt;&lt;br /&gt;    dir.eachFileMatch(~/.*.jar/) { file -&amp;gt;  &lt;br /&gt;         files &amp;lt;&amp;lt; file&lt;br /&gt;    }  &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// extract name pattern and version&lt;br /&gt;def fileBeginList = []&lt;br /&gt;def versionList = []&lt;br /&gt;lista.each{&lt;br /&gt;   def split = it.split(":");&lt;br /&gt;   fileBeginList &amp;lt;&amp;lt; split[1]&lt;br /&gt;   versionList &amp;lt;&amp;lt; split[3]&lt;br /&gt;   println "${split[1]} --- ${split[3]}"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;def finalList = [];&lt;br /&gt;// extract right jars paths from list&lt;br /&gt;for (it in files){&lt;br /&gt;    def name = it.getName()&lt;br /&gt;    def path = it.getAbsolutePath()&lt;br /&gt;    &lt;br /&gt;    if(!alsoSources &amp;&amp; name.matches(".*sources.*")){&lt;br /&gt;        continue;&lt;br /&gt;    }&lt;br /&gt;    if(!alsojavaDocs &amp;&amp; name.matches(".*javadoc.*")){&lt;br /&gt;        continue;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    for (int i = 0; i &amp;lt; fileBeginList.size(); i++){&lt;br /&gt;        def fBegin = fileBeginList.get(i);&lt;br /&gt;        def version = versionList.get(i);&lt;br /&gt;        if(name.startsWith(fBegin)){&lt;br /&gt;            if(name.matches(".*"+version+".*")){&lt;br /&gt;                finalList &amp;lt;&amp;lt; it;&lt;br /&gt;                break;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;println "---------------------------------------"&lt;br /&gt;println "---------------------------------------"&lt;br /&gt;println "Found:"&lt;br /&gt;finalList.each{&lt;br /&gt;    println it&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;println "---------------------------------------"&lt;br /&gt;println "---------------------------------------"&lt;br /&gt;if(copyPath){&lt;br /&gt;    println "Copy deps jars to: ${copyPath}"&lt;br /&gt;    finalList.each{&lt;br /&gt;        def name = it.getName();&lt;br /&gt;        def path = it.getAbsolutePath();&lt;br /&gt;        def newPath = new File(copyPath, name).getAbsolutePath();&lt;br /&gt;        new AntBuilder().copy ( file : path , tofile : newPath )&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Worked well for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3885924865351442433?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3885924865351442433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3885924865351442433' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3885924865351442433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3885924865351442433'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/02/copy-maven-dependency-tree-jars.html' title='Copy Maven Dependency Tree jars'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2084784248721311556</id><published>2011-02-03T09:48:00.001+01:00</published><updated>2011-02-03T09:50:50.551+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>uDig 1.2.1 is out</title><content type='html'>Copied over from &lt;a href="http://udig-news.blogspot.com/2011/02/udig-121-released.html"&gt;the official uDig blog&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;We have recently released uDig 1.2.1.  This is an incremental update with mainly bug fixes but there are a few notable features added as well.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Additional style editor pages; thanks to the JGrass project and Hydrologis&lt;/li&gt;&lt;li&gt;Access to the latest GeoTools renderer with support for hatch patterns&lt;/li&gt;&lt;li&gt;Access to world+image "bmp" files&lt;/li&gt;&lt;li&gt;Experimental - WMS 1.3.0 support&lt;/li&gt;&lt;li&gt;Updated "submit log" in the help menu&lt;/li&gt;&lt;/ul&gt;Additional documentation:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Updated online help capturing the new style pages style pages&lt;/li&gt;&lt;li&gt;Updated intro documentation for users and developers&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For developers:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We have migrated to a new git repository http://gitorious.org/udig&lt;/li&gt;&lt;li&gt;Access to the latest GeoTools 2.7 Release Candidate&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;The new release can be accessed and downloaded from &lt;a href="http://udig.refractions.net/download"&gt;http://udig.refractions.net/download&lt;/a&gt;/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2084784248721311556?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2084784248721311556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2084784248721311556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2084784248721311556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2084784248721311556'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/02/udig-121-is-out.html' title='uDig 1.2.1 is out'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-160643496589342539</id><published>2011-01-31T17:03:00.005+01:00</published><updated>2011-01-31T17:18:23.749+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='docs'/><title type='text'>My latex friend Texclipse</title><content type='html'>I think I tried it once already and it wasn't mature at that time, but now I am really glad to say that the project is really nice and usable: &lt;a href="http://texlipse.sourceforge.net/"&gt;Texlipse&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally a way to write my latex documentation from within my favourite IDE. While under linux setting up latex is quite easy, in windows it needs a bit more love.&lt;br /&gt;&lt;br /&gt;Antways the &lt;a href="http://texlipse.sourceforge.net/manual/configuration.html"&gt;configuration instructions&lt;/a&gt; on the texlipse site are great, so not much more to say.&lt;br /&gt;&lt;br /&gt;The only thing I found nasty, is the fact that I need the output pdf to be built in a different folder than my source files are in. For me this is due to the fact that otherwise every time I save and it builds, the pdf is uploaded on my dropbox.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TUbeuR1j3FI/AAAAAAABRfs/IZYcZxQiyeE/s1600/settings.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 261px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TUbeuR1j3FI/AAAAAAABRfs/IZYcZxQiyeE/s400/settings.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5568382875933596754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see in the screen, there is a setting that tells: "bin directory of tex distribution", which should give me the possibility to change the output folder. Well, in my install, that one is not only ignored, the textfield of the folder gets blanked out after I press APPLY or OK.&lt;br /&gt;&lt;br /&gt;An easy workaround is to add the small option to the command &lt;span style="font-weight:bold;"&gt;-output-directory=&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TUbfjf51rgI/AAAAAAABRf0/gvSoAeIdzT8/s1600/settings1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 253px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TUbfjf51rgI/AAAAAAABRf0/gvSoAeIdzT8/s400/settings1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5568383790242704898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good stuff from the Texlipse guys, goooood stuff!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh yeah, and wait, a screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TUbguIRc2dI/AAAAAAABRf8/-nm7sdIrPPg/s1600/texlipse.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TUbguIRc2dI/AAAAAAABRf8/-nm7sdIrPPg/s400/texlipse.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5568385072389478866" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-160643496589342539?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/160643496589342539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=160643496589342539' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/160643496589342539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/160643496589342539'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/01/my-latex-friend-texclipse.html' title='My latex friend Texclipse'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/TUbeuR1j3FI/AAAAAAABRfs/IZYcZxQiyeE/s72-c/settings.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1145969437386714515</id><published>2011-01-24T16:02:00.003+01:00</published><updated>2011-01-24T16:08:15.074+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>Geopaparazzi 2.1 released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TRnbKq8Z6iI/AAAAAAABQTw/73dqy65EFog/s1600/promo_graphic.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 180px; height: 120px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TRnbKq8Z6iI/AAAAAAABQTw/73dqy65EFog/s400/promo_graphic.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5555712591711037986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Geopaparazzi 2.1.0 has been released to the android market.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Release notes for version 2.1.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;New features:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;zoom bar on map view to choose the zoomlevel&lt;/li&gt;&lt;br /&gt;&lt;li&gt;compass view now links to the Gps Status Application&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wiki.geopaparazzi.googlecode.com/hg/images2/14_map_view.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 480px;" src="http://wiki.geopaparazzi.googlecode.com/hg/images2/14_map_view.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fixes:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;lots of enhancements on the data decimating and rendering performance, fixing crashes and freezes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;.nomedia file in the maps cache folder to stop scanner from browsing it &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As usual the &lt;a href="http://code.google.com/p/geopaparazzi/wiki/Docs"&gt;updated docs are here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1145969437386714515?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1145969437386714515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1145969437386714515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1145969437386714515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1145969437386714515'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/01/geopaparazzi-21-released.html' title='Geopaparazzi 2.1 released'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/TRnbKq8Z6iI/AAAAAAABQTw/73dqy65EFog/s72-c/promo_graphic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2001979998764741525</id><published>2011-01-19T09:44:00.002+01:00</published><updated>2011-01-19T09:48:30.358+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jgrasstools'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='licenses'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>The last two steps of JGrass towards uDig</title><content type='html'>It is since the joining of the uDig community that we wanted to slowly migrate all of JGrass as smooth as possible into uDig. This process has been slow and effort consuming, but is now at a good point, as some of the previous posts here document. &lt;br /&gt;&lt;br /&gt;I will now the most important proposal to the uDig community, hoping that it will be accepted. If you are &lt;a href="http://code.google.com/p/jgrass/wiki/jgrass4udig"&gt;interested in reading through the thing, just go for it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Need a candy? Here you are:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TTalHRDQH9I/AAAAAAABQno/i_v4ByqlfiA/s1600/01_jgrass2000.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 245px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TTalHRDQH9I/AAAAAAABQno/i_v4ByqlfiA/s400/01_jgrass2000.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5563815933917536210" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2001979998764741525?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2001979998764741525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2001979998764741525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2001979998764741525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2001979998764741525'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/01/last-two-steps-of-jgrass-towards-udig.html' title='The last two steps of JGrass towards uDig'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/TTalHRDQH9I/AAAAAAABQno/i_v4ByqlfiA/s72-c/01_jgrass2000.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6429187387925820628</id><published>2011-01-18T15:30:00.006+01:00</published><updated>2011-01-18T15:36:55.710+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>JGrass all-in-one bundle</title><content type='html'>We got requests from users to put the an all-in-one bundle of JGrass/BeeGIS downloadable on the net.&lt;br /&gt;&lt;br /&gt;In 2010 we used one version for several courses. It is the one some of you know because it had working support for netcdfs in uDig.&lt;br /&gt;&lt;br /&gt;Well, while waiting for the next version of uDig with much of JGrass integrated directly and while waiting for a complete merge of JGrass into uDig, &lt;a href="http://code.google.com/p/jgrass/wiki/Installation?ts=1295360320&amp;updated=Installation#JGrass_all-in-one_release_2010"&gt;we put the bundles at this page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are several presentations on slideshare of the courses that can be used both to get started with JGrass and also to do advanced hydrology with JGrass. Some of them &lt;a href="http://code.google.com/p/jgrass/wiki/Tutorials"&gt;can be found here&lt;/a&gt;, which is also the place were stuff will slowly appear as it is produced.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6429187387925820628?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6429187387925820628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6429187387925820628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6429187387925820628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6429187387925820628'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2011/01/jgrass-all-in-one-bundle.html' title='JGrass all-in-one bundle'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5686870077861918963</id><published>2010-12-28T13:28:00.005+01:00</published><updated>2010-12-28T13:46:34.874+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><title type='text'>Geopaparazzi 2 released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TRnbKq8Z6iI/AAAAAAABQTw/73dqy65EFog/s1600/promo_graphic.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 180px; height: 120px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TRnbKq8Z6iI/AAAAAAABQTw/73dqy65EFog/s400/promo_graphic.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5555712591711037986" /&gt;&lt;/a&gt;&lt;br /&gt;Well, it had to come finally. The version 2 of &lt;a href="http://www.geopaparazzi.eu/"&gt;Geopaparazzi&lt;/a&gt; is finally in the market. Not much more to say more than I did already &lt;a href="http://jgrasstechtips.blogspot.com/2010/12/geopaparazzi-200-xmas-preview.html"&gt;in the last posts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Just to summarize a bit:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;release notes for version 2.0.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;New features:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;complete new graphical interface rewrite following the google design guidelines&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;support for customized json forms&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;actionbar also in mapview&lt;/li&gt;&lt;br /&gt;&lt;li&gt;better navigation buttons in mapview&lt;/li&gt;&lt;br /&gt;&lt;li&gt;panic button and send position button are now split&lt;/li&gt;&lt;br /&gt;&lt;li&gt;moved the maps cache out of the geopap folder for better reuse &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Fixes:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;tons of code revies and tweaks&lt;/li&gt;&lt;br /&gt;&lt;li&gt;moved all hardcoded guis to xml&lt;/li&gt;&lt;br /&gt;&lt;li&gt;much better interaction in maps lists&lt;/li&gt;&lt;br /&gt;&lt;li&gt;logs now have proper end timestamp &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The documentation &lt;a href="http://code.google.com/p/geopaparazzi/wiki/Docs"&gt;entry page is here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With this release &lt;span style="font-weight:bold;"&gt;we also decided to release the old version for free&lt;/span&gt; in the market, so if you search for geopaparazzi or geopaparazzi 1, the free version should appear ready to be installed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That said, Season Greetings to everyone. I hope you all had a nice Xmas and are heading to an amazing new year's eve!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5686870077861918963?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5686870077861918963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5686870077861918963' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5686870077861918963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5686870077861918963'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/12/geopaparazzi-2-released.html' title='Geopaparazzi 2 released'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/TRnbKq8Z6iI/AAAAAAABQTw/73dqy65EFog/s72-c/promo_graphic.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4428465603940762186</id><published>2010-12-24T12:52:00.003+01:00</published><updated>2010-12-24T12:57:26.546+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>Geopaparazzi Xmas Gift</title><content type='html'>It is Xmas and I just finished to write the manual for the Geopaparazzi 2.0 version.&lt;br /&gt;&lt;br /&gt;For those that want to browse a bit the new fucntionalities waiting for the release, &lt;div style="text-align: center;"&gt; &lt;a href="http://code.google.com/p/geopaparazzi/wiki/DashBoard2"&gt;here it is&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, I am shutting down everything and head to the &lt;a href="http://www.nataleamerano.it/en/information/index/1-0.html"&gt;Xmas Market&lt;/a&gt; to warm up my spirit with some mulled wine to properly prepare for the evening.&lt;br /&gt;&lt;br /&gt;Happy Xmas to everyone!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4428465603940762186?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4428465603940762186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4428465603940762186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4428465603940762186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4428465603940762186'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/12/geopaparazzi-xmas-gift.html' title='Geopaparazzi Xmas Gift'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6496789190664706291</id><published>2010-12-23T14:15:00.011+01:00</published><updated>2010-12-23T14:43:52.343+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>Geopaparazzi 2.0.0 Xmas preview</title><content type='html'>This year's Xmas gift is a complete change of geopaparazzi's usability and several new features.&lt;br /&gt;This forced us to get out a 2 version, but well, I hope we will be sticking on that one for a long long while.&lt;br /&gt;&lt;br /&gt;A couple of preview shots:&lt;br /&gt;&lt;br /&gt;Finding the &lt;a href="http://www.slideshare.net/AndroidDev/android-ui-design-tips"&gt;google design tips&lt;/a&gt; really good, I decided geopaparazzi needed more gui love, with a nice dashboard and always available actionbar, as well as better logging handling and blah blah, gui, blah... The result is this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TRNO7rUVCSI/AAAAAAABQQI/tvAFq8kR_0E/s1600/01_dashboard.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TRNO7rUVCSI/AAAAAAABQQI/tvAFq8kR_0E/s400/01_dashboard.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553869552625191202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are now those small wonderthings that make me hot on stylish mobile apps.&lt;br /&gt;&lt;br /&gt;Gps info pops out like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TRNPSNQzA0I/AAAAAAABQQQ/YoimYeOABvA/s1600/02_gpsinfo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TRNPSNQzA0I/AAAAAAABQQQ/YoimYeOABvA/s400/02_gpsinfo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553869939694306114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is one single button for notes. Once touched, it presents all 3 options:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TRNPhPG18TI/AAAAAAABQQY/yLBs0Z6Sot8/s1600/03_notes.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TRNPhPG18TI/AAAAAAABQQY/yLBs0Z6Sot8/s400/03_notes.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553870197887463730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The logging has now a safer way to turn loggin on and off:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TRNPt81F0XI/AAAAAAABQQg/KRTcuokKIB0/s1600/04_log.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TRNPt81F0XI/AAAAAAABQQg/KRTcuokKIB0/s400/04_log.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553870416319467890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As I said before, the action bar is now available also in the map view, which also got added the center on gps button:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TRNP_K75J9I/AAAAAAABQQo/Im06A6LmuC4/s1600/06_map_view.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TRNP_K75J9I/AAAAAAABQQo/Im06A6LmuC4/s400/06_map_view.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553870712163870674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And yes, also notes of different types can be taken from here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TRNQI5_lKLI/AAAAAAABQQw/sZCvTAFmycU/s1600/07_notes_from_map.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TRNQI5_lKLI/AAAAAAABQQw/sZCvTAFmycU/s400/07_notes_from_map.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553870879414626482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But the most (or second most) amazing news here is the support for structured notes. It is possible to describe buttons and forms through json files, that then generate the needed guis for the creation of notes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TRNQjaCqpAI/AAAAAAABQQ4/7y0pDn0FiGU/s1600/08_forms.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TRNQjaCqpAI/AAAAAAABQQ4/7y0pDn0FiGU/s400/08_forms.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553871334694102018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And that one is really something I like :) &lt;br /&gt;The kml export now exports those notes embedding tables inside the notes itself. This leads to extremly nice results of superfast surveys.&lt;br /&gt;On the BeeGIS import side we still have to work a bit to see how to handle those. One idea is to create shapefiles containing the form fields as attribute table. The doors are open.&lt;br /&gt;&lt;br /&gt;Well, I can't leave without a screen about the panic action. Since many were using the panic action just to send their position, the panic action kind of lost its sense. Therefore we decidd to give two status updates with different messages in the sent sms:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TRNRBy5xxUI/AAAAAAABQRA/RGz0l06tsWs/s1600/05_panic.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TRNRBy5xxUI/AAAAAAABQRA/RGz0l06tsWs/s400/05_panic.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5553871856763782466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I really wanted to get this out today, but we need to do more testing and ask the translators for their updates. Will be out as soon as possible!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6496789190664706291?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6496789190664706291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6496789190664706291' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6496789190664706291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6496789190664706291'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/12/geopaparazzi-200-xmas-preview.html' title='Geopaparazzi 2.0.0 Xmas preview'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/TRNO7rUVCSI/AAAAAAABQQI/tvAFq8kR_0E/s72-c/01_dashboard.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5100036815711274664</id><published>2010-12-05T16:41:00.011+01:00</published><updated>2010-12-05T22:13:14.803+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Another bit of grace of uDig to simplify the concept of Location</title><content type='html'>With the jgrasstools effort we also are abstracting the whole raster formats, which before was just the GRASS binary raster format, to be whatever a geotools GridCoverage can be. This is/will make it easy to anyone to run the processing algorithms on any geotiff the same way as on en ESRI ascii grid.&lt;br /&gt;&lt;br /&gt;Taking a bit the distance from the GRASS location and mapset concept was one of the things that we thought would help us a bit, since we are often in the middle of two worlds, between userfriendlyness seeking users and in-assembly-thinking academics. :)&lt;br /&gt;&lt;br /&gt;Well, as stated at the begin, we chose to be able to use the jgrasstools on any raster format directly.&lt;br /&gt;&lt;br /&gt;At our last JGrass course however we figured out that some users will simply make incredible mistakes without any guiding hand, speak: without locking them into a geographically well defined workspace, inside which they at least do not screw up the projection information.&lt;br /&gt;&lt;br /&gt;And that is the GRASS location. As akward it is always for the users to first understand the purpose and meaning of location and mapset, it afterwards might save their lives.&lt;br /&gt;&lt;br /&gt;So we made a new try. Which is to create a bunch of small tools that would help people get in and out of a GRASS location, as if it was a folder somewhere on the system. &lt;br /&gt;Tools to handle a bit automagically the active region concept. &lt;br /&gt;Tools that would help users to get started with the hated geotiff that they got from their local administration.&lt;br /&gt;&lt;br /&gt;So the most important bit is probably the fact that now we can create a Location and mapset directly from an input file:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TPu1ebqlU6I/AAAAAAABQNM/ePz7BF1FZVU/s1600/jgrass_new_01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TPu1ebqlU6I/AAAAAAABQNM/ePz7BF1FZVU/s400/jgrass_new_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547226900463965090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This right now supports geotiffs and esri ascii grids that have information about the projection they are in (prj file mostly). Set file and names for the location and mapset and you are ready to start:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TPu1uxG92lI/AAAAAAABQNU/IAJDrOm9rQA/s1600/jgrass_new_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TPu1uxG92lI/AAAAAAABQNU/IAJDrOm9rQA/s400/jgrass_new_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547227181098064466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The active region has been made a bit more responsive to what happenes. On the left upper side it shows you permanently to what location and mapset it is referring to, so that no user can be confused again about which mapset it is using for processing:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TPu2MfKe0hI/AAAAAAABQNc/stwY5WH43SM/s1600/jgrass_new_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 262px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TPu2MfKe0hI/AAAAAAABQNc/stwY5WH43SM/s400/jgrass_new_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547227691677045266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The catalog JGrass service has been empowered:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TPu2oZIm08I/AAAAAAABQNk/VA3K1tzORIM/s1600/jgrass_new_06.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 353px; height: 251px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TPu2oZIm08I/AAAAAAABQNk/VA3K1tzORIM/s400/jgrass_new_06.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547228171094905794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By rightclicking on the location you now can:&lt;br /&gt;* open the system filebrowser on the location. This is particuary handy when you want to rename a mapset for example&lt;br /&gt;* add a new mapset to the selected location&lt;br /&gt;&lt;br /&gt;The same applies for the mapsets:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TPu3PM-NQEI/AAAAAAABQNs/jFbSohBRnYE/s1600/jgrass_new_05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 369px; height: 266px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TPu3PM-NQEI/AAAAAAABQNs/jFbSohBRnYE/s400/jgrass_new_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547228837844959298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By rightclicking on a mapset you now can:&lt;br /&gt;* same as for the location open the mapset folder with your system file browser&lt;br /&gt;* import dirctly into the mapset an esrii ascii or a geotiff. Files in different projection than the mapset will be reprojected on their way in&lt;br /&gt;* delete a mapset from the location&lt;br /&gt;* set the selected mapset as the active one for all processing done. The active region for this mapset will be shown to highlight the processing region that will be used. This had to be done in the settings before.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And finally we have the map actions:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TPv_9lom2tI/AAAAAAABQN8/2wQ-LWJWOxo/s1600/jgrass_new_04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 342px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TPv_9lom2tI/AAAAAAABQN8/2wQ-LWJWOxo/s400/jgrass_new_04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547308799576431314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From here you can:&lt;br /&gt;* trigger a map summary for a quick statistic on the selected raster&lt;br /&gt;* export maps (also multiple in one go) directly to esri ascii grid and geotiffs&lt;br /&gt;* rename maps&lt;br /&gt;* remove maps&lt;br /&gt;* copy a map on the active region. This is usually usefull, since at the begin the user will ave a DTM  of a larger area than the one to study. Once defined the area of interest, simply select with the active region bbox selector that smaller area and copy the map. It will be cut on the active region&lt;br /&gt;* set the active region to te selected raster map. If more than one map is selected, the active region will be expanded to contain them all&lt;br /&gt;* reproject a map by directly creating a new location and/or mapset&lt;br /&gt;* mosaci maps, i.e. patch them together. If you have 4 maps that contain parts of your area of interest (following Murphys law, it will be placed in the corner of all four), you probably want to first patch the maps and then extract the smaller region of interest&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I guess that's it. While I believe that some of you reading this will think: how the hell should this be usefull? others will definitely count the time to get the next release of uDig. Because yes, most of the above is in uDig, even without JGrass extentions. Not that you would do much from here on with a raster and without JGrass :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh, and BTW, the &lt;a href="http://projects.opengeo.org/geosilk"&gt;geosilk iconset&lt;/a&gt; rocks!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----&lt;br /&gt;update: had to change the map actions screenshot, since I was forgetting the mapreprojection to new location&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5100036815711274664?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5100036815711274664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5100036815711274664' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5100036815711274664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5100036815711274664'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/12/another-bit-of-grace-of-udig-to.html' title='Another bit of grace of uDig to simplify the concept of Location'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TPu1ebqlU6I/AAAAAAABQNM/ePz7BF1FZVU/s72-c/jgrass_new_01.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-8122809202777102984</id><published>2010-11-17T10:19:00.003+01:00</published><updated>2010-11-17T10:25:34.898+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>geopaparazzi 1.2.0 released</title><content type='html'>Today we released geopaparazzi 1.2.0 just in time for our &lt;a href="http://gfoss.it/drupal/gfossday2010"&gt;GFOSS.it conference&lt;/a&gt; &lt;a href="http://gfoss.it/drupal/gfossday2010/workshops"&gt;lab &lt;/a&gt;and &lt;a href="http://gfoss.it/drupal/gfossday2010/programma"&gt;presentations&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So the features and fixes that got into the release are:&lt;br /&gt;&lt;br /&gt;New features&lt;br /&gt;* audio recording button&lt;br /&gt;* the panic button (send sms with position update to a preconfigured phone number)&lt;br /&gt;* added gps exif tags into the pictures taken &lt;br /&gt;&lt;br /&gt;New Localization:&lt;br /&gt;* added Sinhala translation &lt;br /&gt;&lt;br /&gt;Fixes:&lt;br /&gt;* sms catcher was crashing when application not in foreground &lt;br /&gt;&lt;br /&gt;And the mandatory screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wiki.geopaparazzi.googlecode.com/hg/devices/samsung_galaxy_tab_02.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://wiki.geopaparazzi.googlecode.com/hg/devices/samsung_galaxy_tab_02.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tested phones are &lt;a href="http://code.google.com/p/geopaparazzi/wiki/TestedPhones"&gt;listed here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-8122809202777102984?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/8122809202777102984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=8122809202777102984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8122809202777102984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8122809202777102984'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/11/geopaparazzi-120-released.html' title='geopaparazzi 1.2.0 released'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4023130251108034791</id><published>2010-11-13T00:11:00.004+01:00</published><updated>2010-11-13T00:22:20.794+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>geopaparazzi gets the PANIC! button</title><content type='html'>In the upcoming release of geopaparazzi there will be three main additions:&lt;br /&gt;&lt;br /&gt;1) the &lt;a href="http://en.wikipedia.org/wiki/Sinhala_language"&gt;Sinhala &lt;/a&gt;translation&lt;br /&gt;2) the possibility to not only take pictures and georeference them, but also recorded audio&lt;br /&gt;&lt;br /&gt;and...&lt;br /&gt;&lt;br /&gt;3) the PANIC! button&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TN3J6GfwOtI/AAAAAAABQMo/72kCrfm-3bY/s1600/main_vertical.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TN3J6GfwOtI/AAAAAAABQMo/72kCrfm-3bY/s400/main_vertical.png" alt="" id="BLOGGER_PHOTO_ID_5538805116748970706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What would that be? Well, I figured out that my bussiness partner would use it for surveying, my dad would use it to trace mushrooms places somewhere off the track and my girlfriend would use it to log her infinite mountainbike trips. We wanted something that would send out the current position to a preconfigured telephone number with a simple click in the case of problems. Well, that's all that it does... push the button, push push the button! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4023130251108034791?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4023130251108034791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4023130251108034791' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4023130251108034791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4023130251108034791'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/11/geopaparazzi-gets-panic-button.html' title='geopaparazzi gets the PANIC! button'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TN3J6GfwOtI/AAAAAAABQMo/72kCrfm-3bY/s72-c/main_vertical.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5258756971603026392</id><published>2010-11-12T17:16:00.006+01:00</published><updated>2010-11-12T17:32:36.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>uDig styles and filters - human readable... the fun is on!!!</title><content type='html'>You might remember my post about &lt;a href="http://jgrasstechtips.blogspot.com/2010/11/udig-styles-and-filters.html"&gt;udig and filters&lt;/a&gt;, where I stated that filters were given in xml form. Well, thanks to a good comment of Andrea Aime, I tried a simple tweak and now we have filters in a simple and easy human readable form, supporting the amazing power of geotools' filter mechanics.&lt;br /&gt;Thank God those guys exist :)&lt;br /&gt;&lt;br /&gt;An example?&lt;br /&gt;&lt;br /&gt;I have a map with rivers in it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TN1pO1eD4vI/AAAAAAABQMQ/NB6-IBCfEvE/s1600/filters_01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TN1pO1eD4vI/AAAAAAABQMQ/NB6-IBCfEvE/s400/filters_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5538698820327826162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I want to create a rule that only displays those rivers that are longer than 2000 meters. The &lt;a href="http://udig.refractions.net/confluence/display/EN/Common+Query+Language"&gt;CQL function&lt;/a&gt; length comes to help me. Insert it into the filter textbox, press the apply button and here we go:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TN1po7I0zFI/AAAAAAABQMY/jM4xa0exXN0/s1600/filters_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 318px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TN1po7I0zFI/AAAAAAABQMY/jM4xa0exXN0/s400/filters_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5538699268525968466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is easy now to add in another rule and color those that are shorter than 2000 meters:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TN1p92fwzjI/AAAAAAABQMg/jVpJeajkIRI/s1600/filters_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TN1p92fwzjI/AAAAAAABQMg/jVpJeajkIRI/s400/filters_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5538699628057251378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice ha? coming in your next uDig release :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: &lt;a href="http://docs.codehaus.org/display/GEOTDOC/03+ECQL+Examples"&gt;some examples&lt;/a&gt; from the geotools site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5258756971603026392?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5258756971603026392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5258756971603026392' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5258756971603026392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5258756971603026392'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/11/udig-styles-and-filters-human-readable.html' title='uDig styles and filters - human readable... the fun is on!!!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/TN1pO1eD4vI/AAAAAAABQMQ/NB6-IBCfEvE/s72-c/filters_01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2309568434116853360</id><published>2010-11-04T15:09:00.003+01:00</published><updated>2010-11-04T15:32:52.287+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Install JGrass on uDig 1.2</title><content type='html'>It is now more than one week that the JGrass site is down and our providers are not able to get it up again, I am going to post a very short workaround for people that want to install JGrass and get started anyways.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So first get the newest version by installing uDig 1.2 from &lt;a href="http://udig.refractions.net/download/"&gt;the main download site&lt;/a&gt;. Make sure to download version 1.2.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then install the latest JGrass plugins in uDig. There is a great presentation by Silvia that explains how to do that:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="width:477px" id="__ss_3898706"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/GEOFRAMEcafe/3-introduction-to-jgrass" title="3   introduction to jgrass"&gt;3   introduction to jgrass&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse3898706" width="477" height="510"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=3-introductiontojgrass-key-100429044901-phpapp02&amp;amp;stripped_title=3-introduction-to-jgrass&amp;amp;userName=GEOFRAMEcafe"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse3898706" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=3-introductiontojgrass-key-100429044901-phpapp02&amp;amp;stripped_title=3-introduction-to-jgrass&amp;amp;userName=GEOFRAMEcafe" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="477" height="510"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;Have a look at the first slides to see how to do the install. The only thing that changes is that in this version of uDig the urls of the update sites are missing. So, when it comes to the slide 9, you will have nothing and will have to add a  &lt;b&gt;new remote site&lt;/b&gt;. This is simply done by pushing that button and adding the following url into it:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;http://udig.refractions.net/files/update/1.2/community/&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It should then look like the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TNLDVgSnQTI/AAAAAAABQL4/78vqu-udVIM/s1600/update.PNG"&gt;&lt;img style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 395px; height: 400px; text-align: center; " src="http://2.bp.blogspot.com/_VHcYLjUYssM/TNLDVgSnQTI/AAAAAAABQL4/78vqu-udVIM/s400/update.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5535701666204434738" /&gt;&lt;/a&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;/div&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;At that point you can follow back the slides.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you need an introduction on the use of JGrass, follow the presentation until its end.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2309568434116853360?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2309568434116853360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2309568434116853360' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2309568434116853360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2309568434116853360'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/11/install-jgrass-on-udig-12.html' title='Install JGrass on uDig 1.2'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/TNLDVgSnQTI/AAAAAAABQL4/78vqu-udVIM/s72-c/update.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2662193490013872131</id><published>2010-11-02T08:37:00.002+01:00</published><updated>2010-11-02T08:43:34.129+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><title type='text'>Geopaparazzi 1.1.1 released</title><content type='html'>Today we released Geopaparazzi 1.1.1 to the android market. Some info:&lt;br /&gt;&lt;p&gt;New features: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;SMS catcher for finding surveyor through an sms &lt;/li&gt;&lt;li&gt;better handling of gps log names &lt;/li&gt;&lt;li&gt;better note insertion gui &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;New Localization: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;added Spanish translation (thanks Camilla Archetti) &lt;/li&gt;&lt;li&gt;added Finnish translation (thanks Juha Valtanen) &lt;/li&gt;&lt;li&gt;added German translation (thanks Matthias Lendholt) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Fixes: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;fixed small delay in getting the old gps data on screen rotation &lt;/li&gt;&lt;li&gt;gps log list sorted to have most recent on top &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TM_A9hEMiEI/AAAAAAABQLc/zpToC4AoN-I/s1600/measure.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TM_A9hEMiEI/AAAAAAABQLc/zpToC4AoN-I/s400/measure.png" alt="" id="BLOGGER_PHOTO_ID_5534854630142150722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You have wishes for new features? &lt;a href="http://code.google.com/p/geopaparazzi/issues/list"&gt;Add them here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2662193490013872131?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2662193490013872131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2662193490013872131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2662193490013872131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2662193490013872131'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/11/geopaparazzi-111-released.html' title='Geopaparazzi 1.1.1 released'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TM_A9hEMiEI/AAAAAAABQLc/zpToC4AoN-I/s72-c/measure.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5021237645509666175</id><published>2010-11-01T08:56:00.009+01:00</published><updated>2010-11-01T09:28:44.577+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>uDig styles and filters</title><content type='html'>When it comes to filters in SLD it gets really hairy. Filters can be really everything, from an constant value to a complex nested operation on properties. It is one of those things with superpowers but also scary when it comes to the moment to create a gui for it.&lt;br /&gt;&lt;br /&gt;So what we decided to do for now, is to expose the pieces of xml that represents the filter part in a rule. Sure it is only for the brave, but even if you do not edit it, you can at least get some useful info out of it.&lt;br /&gt;&lt;br /&gt;Let's for example start with a themed style with only two classes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TM52d8aQ_GI/AAAAAAABQK0/326gMDWnolE/s1600/filters_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 207px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TM52d8aQ_GI/AAAAAAABQK0/326gMDWnolE/s400/filters_01.png" alt="" id="BLOGGER_PHOTO_ID_5534491248889494626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;if you go to the simple polygon style panel now, you will find a new tab, which states &lt;span style="font-weight: bold;"&gt;Filter&lt;/span&gt;. Inside that you now find the current filter definistion (if one is in).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TM52_XxDZVI/AAAAAAABQK8/-ckdNAfCB58/s1600/filters_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 229px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TM52_XxDZVI/AAAAAAABQK8/-ckdNAfCB58/s400/filters_02.png" alt="" id="BLOGGER_PHOTO_ID_5534491823168513362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this case it gets how the themed styles work, right? As highlighted in the following screenshot, the filter states that the first rule is applied if:&lt;br /&gt;* the property POP_CNTRY &gt;= 0&lt;br /&gt;* AND&lt;br /&gt;* the property POP_CNTRY &lt; 50000&lt;br /&gt;&lt;br /&gt;That is how themed style works. A set of rules is created with filters in a row.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TM54J5SiYfI/AAAAAAABQLM/bA08BsSMXWE/s1600/filters_03b.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 227px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TM54J5SiYfI/AAAAAAABQLM/bA08BsSMXWE/s400/filters_03b.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5534493103477645810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You may have noticed that some countries have disappeared in the previous image. That is because in the previous image I changed the upper limit of the first rule to 50000, while it was different in the first screenshots.&lt;br /&gt;&lt;br /&gt;So you really can modify the filter as you which. You have then to make sure you push the &lt;span style="font-weight:bold;"&gt;Apply Filter&lt;/span&gt; button. At that point the filter will replace the previous filter in the style.&lt;br /&gt;&lt;br /&gt;Just to give you one more example of what you can do, here is how normalization works. Imagine you want to style the population attribute, but normalized on the area, so that it gives a better idea of population density. That is how to change the filter for it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TM55ePiHW3I/AAAAAAABQLU/lU6MUPcGDFY/s1600/filters_06b.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 215px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TM55ePiHW3I/AAAAAAABQLU/lU6MUPcGDFY/s400/filters_06b.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5534494552557575026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What you are saying now is that the first rule is applied if:&lt;br /&gt;* the property POP_CNTRY divided by the property SQKM is &gt;= 0&lt;br /&gt;* AND&lt;br /&gt;* the property POP_CNTRY divided by the property SQKM is &lt; 58.513&lt;br /&gt;&lt;br /&gt;One last hint though. Don't do this by hand, in uDig for doing normalization we have a button on the themed style page :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5021237645509666175?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5021237645509666175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5021237645509666175' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5021237645509666175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5021237645509666175'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/11/udig-styles-and-filters.html' title='uDig styles and filters'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TM52d8aQ_GI/AAAAAAABQK0/326gMDWnolE/s72-c/filters_01.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1610508846550559380</id><published>2010-10-20T23:51:00.002+02:00</published><updated>2010-10-20T23:54:28.561+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><title type='text'>Geopaparazzi 1.1</title><content type='html'>Geopaparazzi 1.1 has just been released to the Android Market.&lt;br /&gt;&lt;br /&gt;This version now needs 1.6 (Donut) Android as minimum OS, since that is needed to support multiple screens. &lt;br /&gt;&lt;br /&gt;Main changes:&lt;br /&gt; * Italian translation&lt;br /&gt; * support for multiple screens (from &lt;a href="http://code.google.com/p/geopaparazzi/wiki/HtcWildfireImages"&gt;HTC Wildfire&lt;/a&gt; to &lt;a href="http://code.google.com/p/geopaparazzi/wiki/SamsungGalaxyTabImages"&gt;Galaxy Tab&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Visit &lt;a href="http://www.geopaparazzi.eu"&gt;www.geopaparazzi.eu&lt;/a&gt; for documentation.&lt;br /&gt;Release notes are &lt;a href="http://code.google.com/p/geopaparazzi/wiki/ReleaseNotes#1.1"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1610508846550559380?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1610508846550559380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1610508846550559380' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1610508846550559380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1610508846550559380'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/10/geopaparazzi-11.html' title='Geopaparazzi 1.1'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-8758092156739554808</id><published>2010-10-08T09:41:00.015+02:00</published><updated>2010-10-08T10:23:25.147+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grass'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>First small JGrass tools migrate to uDig</title><content type='html'>You might be thinking I am crazy, but I was waiting for this post since at least 2 years now, i.e. from the day I decided to merge JGrass into the uDig community. I never did  regret the move, but I had hard times to get at least the general purpose GIS stuff of JGrass into uDig. But that last hurdle seems to be gone now.&lt;br /&gt;&lt;br /&gt;So let me do a quick summary of what got already into the udig core (i.e. next udig releases will show them) and what will come next:&lt;br /&gt;&lt;br /&gt;1) one of the most important one for me was having support for the GRASS format. And here it is finally.&lt;br /&gt;&lt;br /&gt;You can now import grass locations into uDig directly and visualize/use the rasters contained.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TK7NxkAiDrI/AAAAAAABQIg/Niy6Urt8FU4/s1600/tools_11.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 279px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TK7NxkAiDrI/AAAAAAABQIg/Niy6Urt8FU4/s400/tools_11.png" alt="" id="BLOGGER_PHOTO_ID_5525580044193369778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also you can define colorrules and (!) categories.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7OAuy_lNI/AAAAAAABQIo/v4E_NZcJ3XI/s1600/tools_08.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7OAuy_lNI/AAAAAAABQIo/v4E_NZcJ3XI/s400/tools_08.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525580304787412178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) The csv import tool&lt;br /&gt;&lt;br /&gt;Not much to say, you have a &lt;a href="http://en.wikipedia.org/wiki/Comma-separated_values"&gt;comma separated values&lt;/a&gt; file that contains point coordinates, go to the import wizard, check csv import&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7OhKdWQ4I/AAAAAAABQIw/7n-Zc5g3lDs/s1600/tools_09.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7OhKdWQ4I/AAAAAAABQIw/7n-Zc5g3lDs/s400/tools_09.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525580861968630658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;configure how you want the resulting feature layer and you are done&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7OsOi2xKI/AAAAAAABQI4/LINDYzLzVRY/s1600/tools_10.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7OsOi2xKI/AAAAAAABQI4/LINDYzLzVRY/s400/tools_10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525581052044035234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Coverage export&lt;br /&gt;&lt;br /&gt;It is now possible to export coverage layers to geotiff or esrii ascii maps. Starting from the export wizard&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TK7PDTQKuII/AAAAAAABQJA/KC-i2RAVinI/s1600/tools_06.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TK7PDTQKuII/AAAAAAABQJA/KC-i2RAVinI/s400/tools_06.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525581448444819586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;it is also possible to perform a reprojection during the export. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7PPXvEFxI/AAAAAAABQJI/9AJFtE3cwXU/s1600/tools_07.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7PPXvEFxI/AAAAAAABQJI/9AJFtE3cwXU/s400/tools_07.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525581655806580498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) View line orientations&lt;br /&gt;&lt;br /&gt;This might be of few help to some, but might be life/time saving to others. I much to often need to know the orientation of the lines that were digitalized. By selecting a line layer and opening the operations menu&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7PonXTYZI/AAAAAAABQJQ/X4pkHbRNq7Q/s1600/tools_01.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7PonXTYZI/AAAAAAABQJQ/X4pkHbRNq7Q/s400/tools_01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525582089498616210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;this is now shown to you through arrows&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7PxXRUovI/AAAAAAABQJY/tElvTefDJRg/s1600/tools_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7PxXRUovI/AAAAAAABQJY/tElvTefDJRg/s400/tools_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525582239797388018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5) The coverage info tool&lt;br /&gt;&lt;br /&gt;The info tool now also understands coverages. Therefore if you pic with the info tool over a map, now also the coverage layers are taken into account&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7QHVOkGoI/AAAAAAABQJg/yoaqCxG1eN4/s1600/tools_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TK7QHVOkGoI/AAAAAAABQJg/yoaqCxG1eN4/s400/tools_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525582617206069890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6) The profile tool&lt;br /&gt;&lt;br /&gt;A profile tool for raster maps is now available. It is available under the info tools (the one with the red icon, indicating that there is a problem with the icon, has to be solved still)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7QiqpE79I/AAAAAAABQJo/s0ASansmluE/s1600/tools_04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7QiqpE79I/AAAAAAABQJo/s0ASansmluE/s400/tools_04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525583086810886098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once activated, the selected layer's coverage is read and we can use the tool to draw lines (same as with the distance tool). The profile view opens up and the resulting profile is shown as it proceeds. Red markers are shown in the click points.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7RD7F3TpI/AAAAAAABQJw/mXtLtK2SfZY/s1600/tools_05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TK7RD7F3TpI/AAAAAAABQJw/mXtLtK2SfZY/s400/tools_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525583658162278034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is also a second mode to use the profile tool, which is through an existing feature.&lt;br /&gt;To use that you have to select the feature layer and the raster layer you want to use for the elevations. Then you select the line feature you want to use for the profile.&lt;br /&gt;From the operations menu choose: Feature on Coverage profile&lt;br /&gt;You will get something like the following, having a marker in every node of the line&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TK7UiZNKdEI/AAAAAAABQJ4/VRl2JmkRWrY/s1600/tools_12.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TK7UiZNKdEI/AAAAAAABQJ4/VRl2JmkRWrY/s400/tools_12.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525587480176915522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I feel good, I knew that I would!&lt;br /&gt;Next are all the advanced style features and the netcdf format support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-8758092156739554808?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/8758092156739554808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=8758092156739554808' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8758092156739554808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8758092156739554808'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/10/first-small-jgrass-tools-migrate-to.html' title='First small JGrass tools migrate to uDig'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/TK7NxkAiDrI/AAAAAAABQIg/Niy6Urt8FU4/s72-c/tools_11.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7123853762413923158</id><published>2010-09-28T16:26:00.008+02:00</published><updated>2010-09-28T16:42:56.099+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><title type='text'>The form editor - work in progress</title><content type='html'>I want to give a small preview of what the new form editor for creating dynamic and flexible forms in BeeGIS will look like. On one hand because it is coming quite nice and on the other to show to those that pay us on this (ARPA Piemonte) that we are getting closer.&lt;br /&gt;&lt;br /&gt;Well, what would a form editor be? A tool to create forms to make surveying easier and also more standard. Once a form is defined for a certain shapefile, attributes of the features in the file can be modified in the same way by everyone through the form. I do not want to describe further here, that will be a task for the manual writers.&lt;br /&gt;&lt;br /&gt;Let's see where we are now.&lt;br /&gt;&lt;br /&gt;The "form language" has been defined on an xml base, so a file that looks like that&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TKH80UKPY_I/AAAAAAABQH4/E1AUwvKnszw/s1600/04_form_editor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 330px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TKH80UKPY_I/AAAAAAABQH4/E1AUwvKnszw/s400/04_form_editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521972593827996658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;will produce a graphcial interface for feature editing like this one&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TKH9BrspMgI/AAAAAAABQIA/iU1-tABCXwY/s1600/01_form_editor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TKH9BrspMgI/AAAAAAABQIA/iU1-tABCXwY/s400/01_form_editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521972823484609026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a quite complex one and has more then one tab&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TKH9KQ2Cg3I/AAAAAAABQII/8aJ83TLrnF4/s1600/02_form_editor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TKH9KQ2Cg3I/AAAAAAABQII/8aJ83TLrnF4/s400/02_form_editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521972970895082354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Comboboxes can be described in a human readable way, while they modify the attributes with codes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TKH9WbRYNHI/AAAAAAABQIQ/2zqsM-ExlHk/s1600/03_form_editor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TKH9WbRYNHI/AAAAAAABQIQ/2zqsM-ExlHk/s400/03_form_editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521973179852534898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, yes, who would write such an xml to get a complex form? How long would it take. It took me about 2 hours to create the one I am showing here, but do not despair, we won't let users alone. &lt;br /&gt;&lt;br /&gt;In fact there is also a form editor in progress that will make the generation of form files easy.&lt;br /&gt;&lt;br /&gt;I will make the huge error to show you what it will more or less look like, but I also warn you that this is just a first draft prototype, things might change at least a bit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TKH-Ps-li7I/AAAAAAABQIY/WeMmKqSZ6Os/s1600/05_form_editor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TKH-Ps-li7I/AAAAAAABQIY/WeMmKqSZ6Os/s400/05_form_editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521974163858099122" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7123853762413923158?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7123853762413923158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7123853762413923158' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7123853762413923158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7123853762413923158'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/09/form-editor-work-in-progress.html' title='The form editor - work in progress'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TKH80UKPY_I/AAAAAAABQH4/E1AUwvKnszw/s72-c/04_form_editor.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2857622572805620004</id><published>2010-09-25T12:07:00.003+02:00</published><updated>2010-09-25T12:12:58.998+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Geopaparazzi is out!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TJ3LBH_glnI/AAAAAAABQHw/DUxq2nOnPhM/s1600/icon_big.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 165px; height: 167px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TJ3LBH_glnI/AAAAAAABQHw/DUxq2nOnPhM/s400/icon_big.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5520791938411828850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Today we finally released the first version of Geopaparazzi on the android market. The project is released under GPLv3 an available on the &lt;a href="http://www.geopaparazzi.eu/"&gt;homepage of the project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Geopaparazzi is a tool developed to supprot very fast qualitative engineering/geologic surveys. It integrates completely with the BeeGIS digital tablet extentions, i.e. the data are imported straight into the GIS from the phone for further processing. &lt;a href="http://code.google.com/p/geopaparazzi/wiki/GeopaparazziAndBeegis"&gt;See this link for an example&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Geopaparazzi is sold on the Android market and supports the development of Geopaprazzi itself as well as the projects developed by the same team: &lt;a href="http://www.jgrass.org/"&gt;JGrass&lt;/a&gt;, &lt;a href="http://www.jgrasstools.org/"&gt;JGrassTools &lt;/a&gt;and &lt;a href="http://code.google.com/p/beegis/"&gt;BeeGIS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That said, I leave you to the documentation on the &lt;a href="http://www.geopaparazzi.eu/"&gt;main website&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2857622572805620004?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2857622572805620004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2857622572805620004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2857622572805620004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2857622572805620004'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/09/geopaparazzi-is-out.html' title='Geopaparazzi is out!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TJ3LBH_glnI/AAAAAAABQHw/DUxq2nOnPhM/s72-c/icon_big.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3590198758047037221</id><published>2010-09-10T09:55:00.008+02:00</published><updated>2010-09-10T10:10:13.748+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='devel'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Distributing 'em around: hg and git</title><content type='html'>Well, well, finally it seems that we are all moving to distributed versioning systems...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TInmIDZUwdI/AAAAAAABQF8/8izsKT70gRc/s1600/udig_logo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 63px; height: 63px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TInmIDZUwdI/AAAAAAABQF8/8izsKT70gRc/s400/udig_logo.png" alt="" id="BLOGGER_PHOTO_ID_5515192244716749266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;uDig is now out at: &lt;a href="http://gitorious.org/udig"&gt;http://gitorious.org/udig&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TInmllUcI4I/AAAAAAABQGE/hlcJ3LSic6M/s1600/jgrass64x64.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 64px; height: 64px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TInmllUcI4I/AAAAAAABQGE/hlcJ3LSic6M/s400/jgrass64x64.png" alt="" id="BLOGGER_PHOTO_ID_5515192752039273346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;together with JGrass as subproject: &lt;a href="http://gitorious.org/udig/jgrass"&gt;http://gitorious.org/udig/jgrass&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TInm0DTrE7I/AAAAAAABQGM/BQRoucD7GXw/s1600/jgrassgears.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 63px; height: 63px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TInm0DTrE7I/AAAAAAABQGM/BQRoucD7GXw/s400/jgrassgears.png" alt="" id="BLOGGER_PHOTO_ID_5515193000607290290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;jgrasstools home is: &lt;a href="http://www.jgrasstools.org/"&gt;http://www.jgrasstools.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TInnK3PjXWI/AAAAAAABQGU/71RUk-OZ1NE/s1600/bee_60.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 45px; height: 60px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TInnK3PjXWI/AAAAAAABQGU/71RUk-OZ1NE/s400/bee_60.png" alt="" id="BLOGGER_PHOTO_ID_5515193392505773410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;beegis is slowly settling at: &lt;a href="http://code.google.com/p/beegis"&gt;http://code.google.com/p/beegis&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TInnhbyzwiI/AAAAAAABQGc/p45QxlIKbys/s1600/icon7.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 48px; height: 48px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TInnhbyzwiI/AAAAAAABQGc/p45QxlIKbys/s400/icon7.png" alt="" id="BLOGGER_PHOTO_ID_5515193780274446882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;geopaparazzi is at: &lt;a href="http://www.geopaparazzi.eu/"&gt;http://www.geopaparazzi.eu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Guess this is it, quite evenly distributed between git and mercurial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3590198758047037221?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3590198758047037221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3590198758047037221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3590198758047037221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3590198758047037221'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/09/distributing-em-around-hg-and-git.html' title='Distributing &apos;em around: hg and git'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TInmIDZUwdI/AAAAAAABQF8/8izsKT70gRc/s72-c/udig_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-607533744298426477</id><published>2010-08-26T11:05:00.004+02:00</published><updated>2010-08-26T11:10:23.395+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>SWT, Tabfolder and ScrolledComposite</title><content type='html'>Every time I have to create a scrolled tabfolder, it is the same. I have to fiddle around to make it work nicely. Around the net I can't find a good and complete example.&lt;br /&gt;&lt;br /&gt;So here is how I solved it. Didn't have time to clean the code up. Remove objects you don't need and if you have troubles, just ping me. Hope this helps someone.&lt;br /&gt;Here we go:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// create the tab folder&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CTabFolder folder = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CTabFolder(parent, SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;BOTTOM&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;folder.setUnselectedCloseVisible(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;false&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;folder.setLayout(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FillLayout());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// for every Tab object create a tab&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;List&lt;tab&gt; orderedTabs = &lt;/tab&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;form&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.getOrderedTabs();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;boolean&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; first = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( Tab orderedTab : orderedTabs ) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// the &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;&lt;u&gt;tabitem&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;CTabItem tab = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CTabItem(folder, SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;NONE&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;tab.setText(orderedTab.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (first) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;    // select the first tab&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;    folder.setSelection(tab);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;    first = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;false&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// we want the content to scroll&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ScrolledComposite scroller = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ScrolledComposite(folder, SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;V_SCROLL&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;scroller.setLayout(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FillLayout());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// the actual content of the tab&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;Composite tabComposite = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Composite(scroller, SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;NONE&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;tabComposite.setLayout(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; MigLayout(orderedTab.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;layoutConstraints&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, orderedTab.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;colConstraints&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// which goes as content to the scrolled composite&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;scroller.setContent(tabComposite);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;scroller.setExpandVertical(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;scroller.setExpandHorizontal(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;scroller.setMinHeight(folder.computeSize(SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;DEFAULT&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;DEFAULT&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;y&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;scroller.addControlListener(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ControlAdapter(){&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;/div&gt;                           &lt;div style="margin-left: 80px;"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; controlResized( ControlEvent e ) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;    // recalculate height in case the resize makes texts &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;    // wrap or things happen that require it&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;    Rectangle r = scroller.getClientArea();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;    scroller.setMinHeight(folder.computeSize(SWT.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;DEFAULT&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, r.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;y&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;        &lt;div style="margin-left: 40px;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// the &lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;&lt;u&gt;scroller&lt;/u&gt;&lt;/span&gt;&lt;span style="color: rgb(63, 127, 95);"&gt; gets the control of the tab item&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;tab.setControl(scroller);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(63, 127, 95);"&gt;// add things to the tab composite&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;List&lt; ? &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;extends&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FormElement&gt; orderedElements = orderedTab.getOrderedElements();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( FormElement orderedGuiElement : orderedElements ) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;/div&gt;             &lt;div style="margin-left: 80px;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;FormGuiElement formGui = FormGuiFactory.&lt;i&gt;createFormGui&lt;/i&gt;(orderedGuiElement);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;formGui.makeGui(tabComposite);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;   &lt;div style="margin-left: 40px;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-607533744298426477?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/607533744298426477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=607533744298426477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/607533744298426477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/607533744298426477'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/swt-tabfolder-and-acrolledcomposite.html' title='SWT, Tabfolder and ScrolledComposite'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-324351951760540488</id><published>2010-08-20T11:49:00.007+02:00</published><updated>2010-08-20T11:59:34.679+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Labels and Raster color masks</title><content type='html'>A quick update on the style editors for uDig for those who care. &lt;br /&gt;The labels part and a raster color mask is now there for testing.&lt;br /&gt;&lt;br /&gt;1) Example about lines labels&lt;br /&gt;&lt;br /&gt;Now all the feature style panels have a labels panel added:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TG5QJylBqCI/AAAAAAABPbw/w6Byb66PBiQ/s1600/02_labeling.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 260px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TG5QJylBqCI/AAAAAAABPbw/w6Byb66PBiQ/s400/02_labeling.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507427523446810658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;from there you can do several stuff, I will just show the labelling of lines here.&lt;br /&gt;&lt;br /&gt;More or less I tried to support everything that gepotools does (some of it is taken &lt;a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/index.html"&gt;from the sld cookbook&lt;/a&gt; of the geoserver community).&lt;br /&gt;&lt;br /&gt;So the result would be:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TG5Q0XsrQ6I/AAAAAAABPb4/99WXs9H1JK0/s1600/03_labeling.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TG5Q0XsrQ6I/AAAAAAABPb4/99WXs9H1JK0/s400/03_labeling.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507428254965515170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Another thing that has been missing for a while in uDig is the possibility to create an alpha mask based on a color for imagery.&lt;br /&gt;&lt;br /&gt;If for example I have a tecnical map:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TG5RHTHNp1I/AAAAAAABPcA/gz0BYXtX65Y/s1600/01_raster_colormask.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TG5RHTHNp1I/AAAAAAABPcA/gz0BYXtX65Y/s400/01_raster_colormask.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507428580152158034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;which I would love to see in overlay with an ortophoto, I now can go into the style options and set a color to alpha:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TG5RTZbRToI/AAAAAAABPcI/yjY3Z0KMjkY/s1600/02_raster_colormask.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TG5RTZbRToI/AAAAAAABPcI/yjY3Z0KMjkY/s400/02_raster_colormask.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507428788005326466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Which then would lead to have the wanted overlay:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TG5RcAu4rjI/AAAAAAABPcQ/IPubyIgxVe4/s1600/03_raster_colormask.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TG5RcAu4rjI/AAAAAAABPcQ/IPubyIgxVe4/s400/03_raster_colormask.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507428935995534898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sadly this last is not something that is supported in the SLD specs (so they tell me), so it can't be persisted in a sld file. However it might be added to geotools as a vendor option. That would be awesome. For now, I'll enjoy it in uDig...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-324351951760540488?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/324351951760540488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=324351951760540488' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/324351951760540488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/324351951760540488'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/labels-and-raster-color-masks.html' title='Labels and Raster color masks'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/TG5QJylBqCI/AAAAAAABPbw/w6Byb66PBiQ/s72-c/02_labeling.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1547548696352511410</id><published>2010-08-14T19:04:00.003+02:00</published><updated>2010-08-14T19:12:09.311+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>svn merges from trunk</title><content type='html'>How easy is it to merge fixes from trunk into a stable version you did before?&lt;br /&gt;&lt;br /&gt;With mercurial or git really easy, with svn it might be really easy :)&lt;br /&gt;&lt;br /&gt;I have been lucky, having to merge fixes from the uDig trunk into the uDig 1.2.0 release tag, which, as it seems, was not really ready and didn't pass the QA.&lt;br /&gt;&lt;br /&gt;Few steps to do the merge:&lt;br /&gt;&lt;br /&gt;1) checkout the tag into which the new changes have to go&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;svn co http://svn.refractions.net/udig/udig/tags/1.2.0 udig1.2.0tag&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;that creates a folder &lt;span style="font-weight:bold;"&gt;udig1.2.0tag&lt;/span&gt; with the tag code in it.&lt;br /&gt;&lt;br /&gt;2) cd into that folder and check for the differences with trunk:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;svn diff http://svn.refractions.net/udig/udig/trunk -r31936:31952&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;31936:31952&lt;/span&gt; are the revisions that were added to trunk after the tag.&lt;br /&gt;&lt;br /&gt;Check the changes and see if the patch can work out for you or.... if you nothing scares you....&lt;br /&gt;&lt;br /&gt;3) do the merge! :)&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;svn merge -r31936:31952 http://svn.refractions.net/udig/udig/trunk&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Well, if you are lucky you have no conflicts, else just open up your IDE and fix them. Then commit. Your merge is done. Hmmmm, why is this always so scary?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1547548696352511410?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1547548696352511410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1547548696352511410' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1547548696352511410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1547548696352511410'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/svn-merges-from-trunk.html' title='svn merges from trunk'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2370178527842082307</id><published>2010-08-13T14:28:00.016+02:00</published><updated>2010-08-13T14:54:07.308+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Lines Styles and staring over again</title><content type='html'>Well, it sometimes happens that you are almost there and you should just add those 2% and you find that little something that you think you will need or you should put in there. And even if your schedule tells you to leave it out, you can't sleep at night, awake staring at the white roof of your room.&lt;br /&gt;&lt;br /&gt;Well, this is what happened to me, since I wanted to make the uDig style editor from the merging of SLD into the QGIS gui design. So I decided, as you probably saw in my latest posts, that there had to be something called &lt;span style="font-weight:bold;"&gt;rules&lt;/span&gt; which would represent a style property for a certain geometry.&lt;br /&gt;&lt;br /&gt;In SLD there are things called &lt;span style="font-weight:bold;"&gt;FeatureTypeStyle&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;Rule&lt;/span&gt;. And later I will show you also what they can infuence.&lt;br /&gt;&lt;br /&gt;For now let's start with a simple road-map.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU8NiIs02I/AAAAAAABPYw/vqzSCsK2C1c/s1600/01_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU8NiIs02I/AAAAAAABPYw/vqzSCsK2C1c/s400/01_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504872322729562978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Which in the editor looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TGU8V2XSioI/AAAAAAABPY4/GMRgOz8vS0U/s1600/02_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TGU8V2XSioI/AAAAAAABPY4/GMRgOz8vS0U/s400/02_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504872465598417538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You might note that the rules list if now a tree viewer. Whan looking at the tree viewer think of the following mapping:&lt;br /&gt;&lt;br /&gt;root elements = groups = FeatureTypeStyle&lt;br /&gt;children elements = rule = Rule&lt;br /&gt;&lt;br /&gt;For some that might sound strange, but I know some will understand :)&lt;br /&gt;&lt;br /&gt;Alright, let's add a second rule that has a line a bit thicker then the first, in order to give the feeling of a line with black border.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TGU9W0QoNUI/AAAAAAABPZA/ZlcAKjWjDlY/s1600/03_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TGU9W0QoNUI/AAAAAAABPZA/ZlcAKjWjDlY/s400/03_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504873581725103426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We now have a group with two rules, which will result in:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TGU9eezL0KI/AAAAAAABPZI/XjkhWTQ8Qb8/s1600/04_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TGU9eezL0KI/AAAAAAABPZI/XjkhWTQ8Qb8/s400/04_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504873713403416738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And exactly here lies the problem. Do you see the ugly overlapping of the roads?&lt;br /&gt;&lt;br /&gt;If we instead do the same with two groups and one rule per group:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU90vw0-II/AAAAAAABPZQ/CsIZFSL1SUU/s1600/05_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU90vw0-II/AAAAAAABPZQ/CsIZFSL1SUU/s400/05_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504874095914055810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;we gain the wanted result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU-Bp0kQ3I/AAAAAAABPZY/wMxUMmrXh0g/s1600/06_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU-Bp0kQ3I/AAAAAAABPZY/wMxUMmrXh0g/s400/06_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504874317657424754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;if we then also take care a bit of the caps and joins of the lines it looks even better:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TGU-R-vgsQI/AAAAAAABPZg/oPVc5_4qEIg/s1600/08_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TGU-R-vgsQI/AAAAAAABPZg/oPVc5_4qEIg/s400/08_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504874598151270658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To end the thing with some more fun, let's play with the dashing of the lines. &lt;br /&gt;&lt;br /&gt;We first set the dash of the red line to 40.0, 40.0:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TGU-xVZTXWI/AAAAAAABPZo/0xfLvupk2yM/s1600/09_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TGU-xVZTXWI/AAAAAAABPZo/0xfLvupk2yM/s400/09_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504875136808082786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and let's also add some ticks to make it nicer:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TGU--rfFtUI/AAAAAAABPZw/YRAvpHG3lBs/s1600/10_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TGU--rfFtUI/AAAAAAABPZw/YRAvpHG3lBs/s400/10_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504875366076233026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here we go:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU_K5qPxrI/AAAAAAABPZ4/hzrhFU6StxI/s1600/11_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU_K5qPxrI/AAAAAAABPZ4/hzrhFU6StxI/s400/11_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504875576039556786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, we have again the overlapping problem... so we try to split in more groups:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TGU_fWo8H_I/AAAAAAABPaA/wCE32sdFWws/s1600/12_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TGU_fWo8H_I/AAAAAAABPaA/wCE32sdFWws/s400/12_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504875927416086514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;which is better, but we still have problems on the line ends:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TGU_sAX9WsI/AAAAAAABPaI/bnbw-C8kyaA/s1600/13_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TGU_sAX9WsI/AAAAAAABPaI/bnbw-C8kyaA/s400/13_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504876144777583298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, at the end I also did a try with graphics stroke, but that one is not yet well supported in the geotools 2.6 series, which is on what uDig 1.2 bases on:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU_-Yu94uI/AAAAAAABPaQ/SKgo-xtOjVo/s1600/14_line_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 208px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TGU_-Yu94uI/AAAAAAABPaQ/SKgo-xtOjVo/s400/14_line_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504876460554183394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;They say geotools 2.7 has better support for graphics strokes, so that will be available in uDig 1.3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2370178527842082307?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2370178527842082307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2370178527842082307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2370178527842082307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2370178527842082307'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/lines-styles-and-staring-over-again.html' title='Lines Styles and staring over again'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/TGU8NiIs02I/AAAAAAABPYw/vqzSCsK2C1c/s72-c/01_line_style.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1176593182900151909</id><published>2010-08-07T12:50:00.013+02:00</published><updated>2010-08-07T13:16:48.141+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>Themed Styles are back in time for 1.2 release</title><content type='html'>Those that were using the release candidates of uDig and were interested in style might have noticed that the themed style editor got quite buggy.&lt;br /&gt;&lt;br /&gt;In the final rushes of the 1.2.0 release of uDig we fixed all of it (that we noticed) and also added a couple of enhancements.&lt;br /&gt;&lt;br /&gt;First of all, icons were all black and didn't show the geometry type.&lt;br /&gt;Now we see polygons being like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TF07xcOf5XI/AAAAAAABOoY/-2hz_xVQXGA/s1600/04_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TF07xcOf5XI/AAAAAAABOoY/-2hz_xVQXGA/s400/04_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502620040293246322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and points like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TF07lu29QRI/AAAAAAABOoQ/zRvoEgDr-B0/s1600/02_themed_style.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 275px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TF07lu29QRI/AAAAAAABOoQ/zRvoEgDr-B0/s400/02_themed_style.png" alt="" id="BLOGGER_PHOTO_ID_5502619839136350482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;we also note differences between the point mark type:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TF07610DdBI/AAAAAAABOog/B6dTOIwxwcU/s1600/03_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TF07610DdBI/AAAAAAABOog/B6dTOIwxwcU/s400/03_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502620201780474898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One thing I was really finding blocking was the fact that only ColorBrewer colortables were supported. Well, I heard many people tell me that 12 classes of color would be enough, but then again I was asking myself why for example the standard colortable of the &lt;a href="http://www.eea.europa.eu/publications/COR0-landcover"&gt;Corine Landcover&lt;/a&gt; has 45?&lt;br /&gt;&lt;br /&gt;Well, everyone should be able to choose, so I did two things:&lt;br /&gt;&lt;br /&gt;1) Add two dynamic colortables that adapt to the number of requested classes by colorinterpolation:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TF0871r1m-I/AAAAAAABOoo/vStOUfO8fjw/s1600/05_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TF0871r1m-I/AAAAAAABOoo/vStOUfO8fjw/s400/05_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502621318437510114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You might or might not know that the colorrules can be customized and the border color can be set. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TF098wYX6cI/AAAAAAABOo4/dk3seG0IXpk/s1600/06_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TF098wYX6cI/AAAAAAABOo4/dk3seG0IXpk/s400/06_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502622433705191874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, that makes Italy look a bit like the &lt;a href="http://en.wikipedia.org/wiki/Shindlers_List"&gt;Girl in the red coat from Schnidler's List&lt;/a&gt;. Well, given the current political status...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TF09vXNDKlI/AAAAAAABOow/Gfe5Z7PH_8s/s1600/07_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 194px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TF09vXNDKlI/AAAAAAABOow/Gfe5Z7PH_8s/s400/07_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502622203608509010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) It is now possible to add custom colortables to uDig. In my example I added the Corinne Landcover colortable:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TF0-R2opdQI/AAAAAAABOpA/MNeV5zV3Lbk/s1600/08_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TF0-R2opdQI/AAAAAAABOpA/MNeV5zV3Lbk/s400/08_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502622796161316098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Well, I have to add something that will come through the new style editor that is in progress :)&lt;br /&gt;&lt;br /&gt;So let's for example start with the cities layer and create a theme with the population rank as unique value (which also was added right now).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TF0-7e_cHGI/AAAAAAABOpI/C3Nc_I4Ywkw/s1600/11_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TF0-7e_cHGI/AAAAAAABOpI/C3Nc_I4Ywkw/s400/11_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502623511368965218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then let's jump into the new points panel, were we find the different rules of the theme as expected. In the &lt;span style="font-weight:bold;"&gt;General Properties&lt;/span&gt; of each rule we then set the size to be field based:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TF0_Vp5SZ9I/AAAAAAABOpQ/j-lQz4iLLAM/s1600/12_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TF0_Vp5SZ9I/AAAAAAABOpQ/j-lQz4iLLAM/s400/12_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502623960972552146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The result is a theme that also sets the size:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TF0_5KwxcvI/AAAAAAABOpY/aoDdQ8_PzVk/s1600/13_themed_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 222px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TF0_5KwxcvI/AAAAAAABOpY/aoDdQ8_PzVk/s400/13_themed_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502624571090629362" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1176593182900151909?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1176593182900151909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1176593182900151909' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1176593182900151909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1176593182900151909'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/themed-styles-are-back-in-time-for-12.html' title='Themed Styles are back in time for 1.2 release'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/TF07xcOf5XI/AAAAAAABOoY/-2hz_xVQXGA/s72-c/04_themed_style.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2689465236233715698</id><published>2010-08-06T00:06:00.008+02:00</published><updated>2010-08-06T00:15:50.783+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>Fun playing with the new style editor</title><content type='html'>Well, I am currently trying to fix glitches on the themed editor of udig. While doing this I got into a combined playing with the themed editor page and the new point editor page I am developing :)&lt;br /&gt;&lt;br /&gt;Here is what might happen:&lt;br /&gt;&lt;br /&gt;1) Create a simple point style&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TFs2Vag3ybI/AAAAAAABOds/sf0R-qektJI/s1600/01_style.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 177px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TFs2Vag3ybI/AAAAAAABOds/sf0R-qektJI/s400/01_style.png" alt="" id="BLOGGER_PHOTO_ID_5502051111285541298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Switch to the theme editor and make it a range style&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TFs2corrzkI/AAAAAAABOd0/9U8dZphMdg0/s1600/02_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TFs2corrzkI/AAAAAAABOd0/9U8dZphMdg0/s400/02_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502051235348074050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) How does it look in the new point editor? Well, as assumed, it separates the rules and makes them available separately&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/TFs2qZAcWWI/AAAAAAABOd8/M3WRg63Qo_g/s1600/03_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/TFs2qZAcWWI/AAAAAAABOd8/M3WRg63Qo_g/s400/03_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502051471658342754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) So let's do something with the rules :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TFs2-qjG3_I/AAAAAAABOeE/qdD0nUFSGbA/s1600/04_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TFs2-qjG3_I/AAAAAAABOeE/qdD0nUFSGbA/s400/04_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502051819964522482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5) Which wil result into this&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TFs3LD4-RhI/AAAAAAABOeM/CFxrFqzQi9w/s1600/05_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TFs3LD4-RhI/AAAAAAABOeM/CFxrFqzQi9w/s400/05_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502052032925550098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6) Which then you might decide to put into your symbol library?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/TFs3X7c5f9I/AAAAAAABOeo/LMOmosVK1zE/s1600/06_style.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/TFs3X7c5f9I/AAAAAAABOeo/LMOmosVK1zE/s400/06_style.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5502052253998612434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And I thought at first SLD would not be fun :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2689465236233715698?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2689465236233715698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2689465236233715698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2689465236233715698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2689465236233715698'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/fun-playing-with-new-style-editor.html' title='Fun playing with the new style editor'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/TFs2Vag3ybI/AAAAAAABOds/sf0R-qektJI/s72-c/01_style.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6500266054507251324</id><published>2010-08-05T11:48:00.003+02:00</published><updated>2010-08-05T11:55:47.598+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>PreferenceConverter</title><content type='html'>I was wondering how to save colors or non int/double/boolean/string values into rcp preferences. As usual it is very easy if you know the tool to use. :)&lt;br /&gt;&lt;br /&gt;So from Color -&gt; Preference&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;IPreferenceStore store = ...&lt;br /&gt;Color red = Display.getDefault().getSystemColor(SWT.COLOR_RED);&lt;br /&gt;PreferenceConverter.setDefault(store, "COLOR_KEY", red.getRGB());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And back: Preference -&gt; Color&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;RGB colorRgb = PreferenceConverter.getColor(store, "COLOR_KEY");&lt;br /&gt;Color red = new Color( Display.getDefault(), colorRgb);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Same applies for example for Fonts or Rectangle and other nice things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6500266054507251324?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6500266054507251324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6500266054507251324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6500266054507251324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6500266054507251324'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/08/preferenceconverter.html' title='PreferenceConverter'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-60547745984525549</id><published>2010-07-13T22:57:00.004+02:00</published><updated>2010-07-13T23:06:08.081+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>Work in progress on the new style editor</title><content type='html'>To be honest I thought that creating a style editor would be less work. But Style is style, and once you get into it you would want more and more. So it ends up that only to think about simple points, there are thousands of possibilities...&lt;br /&gt;&lt;br /&gt;Well, it is a work in progress, but it is already possible to create quite complex styles and save them in an own library.&lt;br /&gt;&lt;br /&gt;Well, to give you an idea...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TDzUuRth--I/AAAAAAABNw8/EJ2FBx_AU6A/s1600/style_editor_01.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 218px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TDzUuRth--I/AAAAAAABNw8/EJ2FBx_AU6A/s400/style_editor_01.png" alt="" id="BLOGGER_PHOTO_ID_5493499536978607074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and graphics based (png, svg)...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/TDzU6UXQt7I/AAAAAAABNxE/X5QANXCvP_M/s1600/style_editor_02.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/TDzU6UXQt7I/AAAAAAABNxE/X5QANXCvP_M/s400/style_editor_02.png" alt="" id="BLOGGER_PHOTO_ID_5493499743848937394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, still a long way to go after this... categories, labels, lines and polygons...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-60547745984525549?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/60547745984525549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=60547745984525549' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/60547745984525549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/60547745984525549'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/07/work-in-progress-on-new-style-editor.html' title='Work in progress on the new style editor'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/TDzUuRth--I/AAAAAAABNw8/EJ2FBx_AU6A/s72-c/style_editor_01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1330496481111655517</id><published>2010-07-01T09:45:00.003+02:00</published><updated>2010-07-01T10:14:05.938+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='devel'/><title type='text'>java.lang.NoClassDefFoundError: javax/media/jai/iterator/RandomIter</title><content type='html'>Man, this is the last time you fool me!&lt;br /&gt;At least so I wished... anyways...&lt;br /&gt;You are writing an eclipse RCP application that bases also on JAI?&lt;br /&gt;&lt;br /&gt;Well, you might incur into the error:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;java.lang.NoClassDefFoundError: javax/media/jai/iterator/RandomIter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or something similar.&lt;br /&gt;Also you would swear that the jars are in your classpath.&lt;br /&gt;Also you will browse the whole internet for solutions.&lt;br /&gt;Also you won't find them. (at least I didn't)&lt;br /&gt;Because the ease of all this is in running the application with the following VM argument:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;-Dosgi.parentClassloader=ext&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When I don't create new RCP apps in a while it fools me again. Also you should not try to solve this between 11 pm and 1 am. It would fool you... again.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;As suggested a small addition: In my case the problem is due to the fact I use to keep the jai jars inside the jre and therefore it is needed to tell the classloader to load also the jre extentions (which is where I keep the jars).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1330496481111655517?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1330496481111655517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1330496481111655517' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1330496481111655517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1330496481111655517'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/07/javalangnoclassdeffounderror.html' title='java.lang.NoClassDefFoundError: javax/media/jai/iterator/RandomIter'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-9147422615013566096</id><published>2010-06-17T18:25:00.004+02:00</published><updated>2010-06-17T18:36:59.469+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>New database manager for BeeGIS</title><content type='html'>It has been a while, a long while. I have been busy with my car accident (that sucks) and everything that comes after that (which, onces you were so lucky to come out well from the crash, seems to suck even more :)).&lt;br /&gt;&lt;br /&gt;But a lot of stuff is going on around JGrass and BeeGIS and even if for now I want to keep things around JGrass secret, there are good news for BeeGIS I want to tell.&lt;br /&gt;&lt;br /&gt;Recently the guys of the &lt;span style="font-weight: bold;"&gt;Regional Environmental Agency of the Italian Region Piemont&lt;/span&gt; (&lt;a href="http://www.arpa.piemonte.it/"&gt;ARPA Piemonte&lt;/a&gt;) contracted &lt;a href="http://www.hydrologis.com/"&gt;HydroloGIS&lt;/a&gt; to make several bugfixes and several big enhancements on BeeGIS since they want to use it for their digital field mapping (which is AWESOME!!).&lt;br /&gt;&lt;br /&gt;Well, I won't make a list of the things that will be done now, but I want to show you the first nice thing that is getting from that: The database manager. Since BeeGIS works with embedded databases (it can also with remote, but out in the field you might be offline) you often have the need to switch between databases and quickly create new ones, export them and do whatever you want with them.&lt;br /&gt;That is what the tool is there for.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/TBpOQ8iJlDI/AAAAAAABMm4/bbyZ0JEvo7Q/s1600/database_view_explained.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 263px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/TBpOQ8iJlDI/AAAAAAABMm4/bbyZ0JEvo7Q/s400/database_view_explained.png" alt="" id="BLOGGER_PHOTO_ID_5483781549311235122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A first of several nice features. Thanks ARPA...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-9147422615013566096?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/9147422615013566096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=9147422615013566096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/9147422615013566096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/9147422615013566096'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/06/new-database-manager-for-beegis.html' title='New database manager for BeeGIS'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/TBpOQ8iJlDI/AAAAAAABMm4/bbyZ0JEvo7Q/s72-c/database_view_explained.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5164499087688706505</id><published>2010-04-29T12:53:00.003+02:00</published><updated>2010-04-29T13:11:33.157+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rants and opinions'/><title type='text'>The Story of Bottled Water</title><content type='html'>Got that from the good old boy &lt;a href="http://blog.spaziogis.it/"&gt;Andrea Borruso&lt;/a&gt; and want to share it with this readers also:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object style="height: 344px; width: 425px" width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Se12y9hSOM0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Se12y9hSOM0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.internazionale.it/home/?p=21934"&gt;Source: Internazionale&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5164499087688706505?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5164499087688706505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5164499087688706505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5164499087688706505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5164499087688706505'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/04/story-of-bottled-water.html' title='The Story of Bottled Water'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2562244511279190807</id><published>2010-04-19T09:36:00.002+02:00</published><updated>2010-04-19T09:42:17.472+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='read/write'/><title type='text'>IFile, IFileStore and opening an EditorPart</title><content type='html'>Eclipse's engines turn around the idea of a project.&lt;br /&gt;&lt;br /&gt;If I want to open an Editor on a file, I would have to do:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;IFile iFile = myIFile;&lt;br /&gt;PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()&lt;br /&gt;.openEditor(iFile, FormEditor.ID);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;apart for the fact that IFile refers on a file inside the project, which makes sense inside eclipse, but perhaps not always in an RCP product basing on eclipse.&lt;br /&gt;&lt;br /&gt;So to open an editor on an external (external == wherever in the filesystem != in the eclipse project) file, here is what is possible since 3.3:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;File f = new File(path);&lt;br /&gt;                    &lt;br /&gt;IPath ipath = new Path(f.getAbsolutePath());&lt;br /&gt;IFileStore fileLocation = EFS.getLocalFileSystem().getStore(ipath);&lt;br /&gt;FileStoreEditorInput fileStoreEditorInput = new FileStoreEditorInput(&lt;br /&gt;                            fileLocation);&lt;br /&gt;IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow()&lt;br /&gt;                            .getActivePage();&lt;br /&gt;page.openEditor(fileStoreEditorInput, FormEditor.ID);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2562244511279190807?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2562244511279190807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2562244511279190807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2562244511279190807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2562244511279190807'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/04/ifile-ifilestore-and-opening-editorpart.html' title='IFile, IFileStore and opening an EditorPart'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-977286602818044320</id><published>2010-04-10T23:31:00.003+02:00</published><updated>2010-04-10T23:34:04.530+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grass geotools'/><title type='text'>Grass raster datastore finally in geotools</title><content type='html'>I finally took the time to get the GRASS raster reader into geotools...&lt;br /&gt;&lt;br /&gt;It is started now and available in the unsupported land of the geotools svn:&lt;br /&gt;&lt;br /&gt;http://svn.osgeo.org/geotools/trunk/modules/unsupported/grassraster&lt;br /&gt;&lt;br /&gt;Gonna be funny see geoserver finally serve grass rasters as udig :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-977286602818044320?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/977286602818044320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=977286602818044320' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/977286602818044320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/977286602818044320'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/04/grass-raster-datastore-finally-in.html' title='Grass raster datastore finally in geotools'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6537820056860673410</id><published>2010-04-07T07:56:00.003+02:00</published><updated>2010-04-07T08:08:24.792+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='licenses'/><title type='text'>EPL-GPL: the verdict</title><content type='html'>Some time ago I wrote a post referring to the GPL / EPL licenses incompatibility. To the &lt;a href="http://jgrass.wiki.software.bz.it/jgrass/Open_letter_to_the_fSFEurope"&gt;letter I wrote at that time&lt;/a&gt; and sent to both the Eclipse Foundation adn the FSFEurope, I never got and answer from FSFEurope, but I got several directly form the Executive Director of the Eclipse Foundation, &lt;a href="http://dev.eclipse.org/blogs/mike/about/"&gt;Mike Milinkovich&lt;/a&gt;, who was very helpful in getting a good picture of what the problems are.&lt;br /&gt;&lt;br /&gt;At the time of sending my email, Eclipse Foundation and FSF were discussing the GPL/EPL issue, so I didn't get a direct answer to the questions in the open letter, but now there is a public answer about the issues available:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.eclipse.org/blogs/mike/2010/04/06/epl-gpl-commentary/"&gt;Here the point of view of the Eclipse Foundation can be found.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fsf.org/blogs/licensing/using-the-gpl-for-eclipse-plug-ins"&gt;And here the public statement of the FSF.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will definitely not comment here. Wait for you guys in the mailinglists for a nice chat about that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6537820056860673410?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6537820056860673410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6537820056860673410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6537820056860673410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6537820056860673410'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/04/epl-gpl-verdict.html' title='EPL-GPL: the verdict'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2610597667150916854</id><published>2010-03-05T10:29:00.004+01:00</published><updated>2010-03-05T14:40:56.150+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='devel'/><title type='text'>How to listen to a feature creation by an edit tool</title><content type='html'>Today Virginie BERRE of &lt;a href="http://www.magellium.fr/"&gt;Magellium&lt;/a&gt; showed a nice way to catch a feature created with the editing tool in udig. Guess I have to post that here in order to remember it myself :)&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;map.getEditManager().addListener(new IEditManagerListener() {            &lt;br /&gt; public void changed(EditManagerEvent event) {&lt;br /&gt;    SimpleFeature feature= map.getEditManager().getEditFeature();&lt;br /&gt;       if(feature != null) {&lt;br /&gt;           FilterFactory factory = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints());&lt;br /&gt;           Id uDigfilter = factory.id(Collections.singleton(feature.getIdentifier()));&lt;br /&gt;           try {&lt;br /&gt;              FeatureCollection collection = dodStore.getFeatures(uDigfilter);&lt;br /&gt;         &lt;br /&gt;           // do something with it&lt;br /&gt;&lt;br /&gt;           } catch (IOException e) {&lt;br /&gt;              e.printStackTrace();&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2610597667150916854?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2610597667150916854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2610597667150916854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2610597667150916854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2610597667150916854'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/03/how-to-listen-to-feature-creation-by.html' title='How to listen to a feature creation by an edit tool'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1203875256296223370</id><published>2010-02-25T18:06:00.011+01:00</published><updated>2010-02-25T18:31:12.124+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lidar'/><category scheme='http://www.blogger.com/atom/ns#' term='worldwind'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>About 7.000.000 and more lidar points, the quest for Powerline extraction and JGrass asking help to Nasa World Wind</title><content type='html'>&lt;div style="text-align: center;"&gt;Do you know what this is?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/S4aufYP9ivI/AAAAAAABIuo/baSAYOlA6Ck/s1600-h/millions7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/S4aufYP9ivI/AAAAAAABIuo/baSAYOlA6Ck/s400/millions7.png" alt="" id="BLOGGER_PHOTO_ID_5442229053832399602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;More than 7.000.000 of points rendered in JGrass from a las file. Yes, It does look awsome and is well navigable (with enough ram and videocard :)).&lt;br /&gt;&lt;br /&gt;How? By putting Nasa World Wind as a plugin into JGrass and tweak a bit the OpenGL rendering through the jogl libraries.&lt;br /&gt;&lt;br /&gt;Why? Prototyping around extraction of powerlines.&lt;br /&gt;&lt;br /&gt;Want to know more? What happened next?&lt;br /&gt;Well... we were asked to explore a bit with feature extraction from lidar data, starting fromm the most difficult: powerlines.&lt;br /&gt;&lt;br /&gt;While prototyping we added some tools to read las files and filter the signals through intensity, density of points, elevation difference with the dtm and things like that. Well the result up to now is pretty nice...&lt;br /&gt;&lt;br /&gt;Ok, first let's extract the data inside a polygon... now can you see the powerlines?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S4awKzJ4UpI/AAAAAAABIuw/bZdXXOKQ1x8/s1600-h/sper_geologico01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S4awKzJ4UpI/AAAAAAABIuw/bZdXXOKQ1x8/s400/sper_geologico01.png" alt="" id="BLOGGER_PHOTO_ID_5442230899300651666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ok, let's change the coloring... no more elevation based, but intensity based:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/S4awRQdUdbI/AAAAAAABIu4/vQ2QjtAFUUE/s1600-h/sper_geologico02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/S4awRQdUdbI/AAAAAAABIu4/vQ2QjtAFUUE/s400/sper_geologico02.png" alt="" id="BLOGGER_PHOTO_ID_5442231010246030770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And here we zoom in and color based on point density (in 3d), now the powerlines are already colored differently from most of the rest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S4aw4d_Cs2I/AAAAAAABIvA/YpfN76KOauM/s1600-h/sper_geologico05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S4aw4d_Cs2I/AAAAAAABIvA/YpfN76KOauM/s400/sper_geologico05.png" alt="" id="BLOGGER_PHOTO_ID_5442231683892032354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Some filtering based on intensity, density and elevation difference with the dtm and here we go (it looks empty, but have a closer look):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S4aw-yHkzuI/AAAAAAABIvI/9gm9CKvF0Es/s1600-h/sper_geologico06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S4aw-yHkzuI/AAAAAAABIvI/9gm9CKvF0Es/s400/sper_geologico06.png" alt="" id="BLOGGER_PHOTO_ID_5442231792375746274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let's get back to 2d using a small partial example, how does that look like?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/S4ax4flnURI/AAAAAAABIvY/AHizB7iMRYU/s1600-h/sper_geologico08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/S4ax4flnURI/AAAAAAABIvY/AHizB7iMRYU/s400/sper_geologico08.png" alt="" id="BLOGGER_PHOTO_ID_5442232783833878802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hmmmm, looks that one of the two is a bit wrongly placed... let's check:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S4ayC9NorFI/AAAAAAABIvg/HdndA8n48_Y/s1600-h/sper_geologico09.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S4ayC9NorFI/AAAAAAABIvg/HdndA8n48_Y/s400/sper_geologico09.png" alt="" id="BLOGGER_PHOTO_ID_5442232963585059922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Seems we are right? Check with the aerial photo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S4aySXTevWI/AAAAAAABIvo/V5Hb5FFBJWk/s1600-h/sper_geologico10.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S4aySXTevWI/AAAAAAABIvo/V5Hb5FFBJWk/s400/sper_geologico10.png" alt="" id="BLOGGER_PHOTO_ID_5442233228286934370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aha, so we are right...&lt;br /&gt;&lt;br /&gt;Well, this is just the first part, but it already look promising.&lt;br /&gt;&lt;br /&gt;Looking forward to mature this plugin to get it into the JGrass plugins that are going to be released.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1203875256296223370?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1203875256296223370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1203875256296223370' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1203875256296223370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1203875256296223370'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/02/about-7000000-and-more-lidar-points.html' title='About 7.000.000 and more lidar points, the quest for Powerline extraction and JGrass asking help to Nasa World Wind'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/S4aufYP9ivI/AAAAAAABIuo/baSAYOlA6Ck/s72-c/millions7.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3628450689707623645</id><published>2010-02-02T09:00:00.001+01:00</published><updated>2010-02-03T11:25:36.823+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rants and opinions'/><title type='text'>L'unità di tutte le scienze è trovata nella geografia.</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;L'unità di tutte le scienze è trovata nella geografia. Il significato della geografia è che essa presenta la terra come la sede duratura delle occupazioni dell'uomo. (John Dewey)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Alle elementari avevo un maestro che insegnava geografia e che tirava giù una carta geografica del mondo davanti alla lavagna. Avevo un compagno di classe al sesto anno che un giorno ha alzato la mano e ha indicato la costa orientale del Sudamerica; poi ha indicato la costa occidentale dell'Africa e ha chiesto: «Sono state mai unite?». E il maestro ha risposto: «Certo che no, è una cosa ridicola!». Lo studente cominciò a fare uso di droghe e sparì. L'insegnante è diventato consigliere scientifico dell'attuale amministrazione (ndr Bush). (dal film documentario statunitense del 2006 "Una scomoda verità", diretto da Davis Guggenheim).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Nella mia geografia ancora sta scritto che tra Catanzaro e il mare si trovano i Giardini delle Esperidi. (George Robert Gissing, da Sulle rive dello Jonio).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;L'arma del giornalista è la penna o la macchina da scrivere. L'arma del giornalista sotto vetro smerigliato è la bacchetta o la carta geografica. (Sergio Saviane).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Lungo la costa dell'Africa del Sud-Ovest, delimitato da montagne di origine vulcanica da una parte e dall'Atlantico dall'altra, si stende uno dei più antichi e selvaggi deserti della terra. I geografi chiamano questa zona la Costa degli Scheletri, perché le sue spiagge sono disseminate dei relitti delle navi che vi hanno fatto naufragi. (Ronald Schiller da "Nel mondo dei diamanti").&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;La geografia non e' solo una mappa di google o un navigatore GPS. Non e' solo il fascino degli aspetti che rappresentano la terra. Non e' solo!&lt;br /&gt;&lt;br /&gt;La geografia unisce tutto in modo coerente, riesce a spiegare fenomeni che regolano continenti e popolazioni intere, e' lo studio antropico delle culture, vicine e lontane. Tutto cio' che internet per certi versi in maniera fuorviante ci ha portato sullo schermo di casa, convincendoci di poter sapere, di potere conoscere tutto nell'attimo di un click.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Eppure non e' cosi'.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sapere Aude!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lo studio della geografia e' uno strumento necessario.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Una volta mi hanno raccontato di un ragazzo americano che era convinto, evidentemente educato dalla pubblicita', che le mucche fossero viola. Mi ricordo di avere trovato particolarmente ridicola la storia. Ora mi chiedo cosa potrebbe succedere a noi nel caso in cui andasse persa un disciplina importante come la geografia.&lt;br /&gt;&lt;br /&gt;Vogliamo veramente spingere la gia' decadente situazione dell'istruzione fino ad arrivare a privare i giovani di tutti gli strumenti necessari a capire la complessita' che si cela dietro alla nostra terra? Vogliamo veramente privarli degli strumenti necessari a prendere decisioni competitive e allo stesso tempo sostenibili assieme a coloro con i quali condividono lo stesso globo?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a aiotitle="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.aiig.it/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 130px; height: 110px;" src="http://www.aiig.it/images/love_geography_medium.GIF" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;Firma la petizione presso il sito&lt;br /&gt;dell'&lt;a href="http://www.aiig.it/"&gt;Associazione Italiana  Insegnanti  Geografia&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Insieme a:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="La mappa che cambiò il mondo" href="http://altergeo.wordpress.com/2010/02/02/la-mappa-che-cambio-il-mondo/" target="_blank"&gt;Alternativa  Geologica&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://www.esridipendente.it/2010/02/lunita-di-tutte-le-scienze-e-trovata.html" target="_blank"&gt;ESRIdipendente&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title=" Faccio Cose Vedo Gente" href="http://www.fcvg.it/?p=666" target="_blank"&gt;Faccio Cose Vedo Gente&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="GeoBI" href="http://www.geobi.org/2010/02/lunita-di-tutte-le-scienze-e-trovata.html" target="_blank"&gt;GeoBI&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="freeGIS-Italia" href="http://www.freegis-italia.org/index.php?option=com_content&amp;amp;task=view&amp;amp;id=502&amp;amp;Itemid=77" target="_blank"&gt;freeGIS-Italia&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="Il Blog italiano di AutoCAD Map e Civil 3D" href="http://map3d.blogspot.com/2010/02/lunita-di-tutte-le-scienze-e-trovata.html" target="_blank"&gt;Il Blog italiano di AutoCAD Map e Civil 3D&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="inDiritto.it" href="http://www.indiritto.it/2010/02/02/lunita-di-tutte-le-scienze-e-trovata-nella-geografia/" target="_blank"&gt;inDiritto.it&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="JGrass Tech Tips" href="http://jgrasstechtips.blogspot.com/2010/02/lunita-di-tutte-le-scienze-e-trovata.html" target="_blank"&gt;JGrass Tech Tips&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="map freely" href="http://flaviorigolon.wordpress.com/2010/02/02/lunita-di-tutte-le-scienze-e-trovata-nella-geografia/" target="_blank"&gt;map freely&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="massimozotti.it" href="http://www.massimozotti.it/2010/02/lunita-di-tutte-le-scienze-e-trovata.html" target="_blank"&gt;massimozotti.it&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="OpenStreetMap Italia" href="http://blog.openstreetmap.it/2010/02/lunita-di-tutte-le-scienze-e-trovata-nella-geografia/" target="_blank"&gt;OpenStreetMap Italia&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="Simone Cortesi" href="http://cortesi.com/2010/02/lunita-di-tutte-le-scienze-e-trovata-nella-geografia/" target="_blank"&gt;Simone Cortesi&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="TANTO, le cose che ci piacciono ..." href="http://blog.spaziogis.it/2010/01/01/un-anno-in-cui-sia-piu-semplice-raccontare-storie/" target="_blank"&gt;TANTO&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="Thinking in GIS" href="http://www.paolocorti.net/2010/02/02/the-union-of-all-the-sciences-is-found-in-geography/" target="_blank"&gt;Thinking in GIS&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a title="Sistemi Informativi Territoriali in Sicilia" href="http://sicilia-sit.blogspot.com/2010/02/lunita-di-tutte-le-scienze-e-trovata.html" target="_blank"&gt;Sistemi Informativi Territoriali in Sicilia&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3628450689707623645?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3628450689707623645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3628450689707623645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3628450689707623645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3628450689707623645'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/02/lunita-di-tutte-le-scienze-e-trovata.html' title='L&apos;unità di tutte le scienze è trovata nella geografia.'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7276239104798626800</id><published>2010-01-31T01:23:00.004+01:00</published><updated>2010-03-02T08:44:46.710+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>new console language extentions arriving</title><content type='html'>Not much to say...&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;# MAPSET= mapsetpath&lt;br /&gt;&lt;br /&gt;// print out all available commands and variables&lt;br /&gt;PRINTCOMMANDS&lt;br /&gt;&lt;br /&gt;// access the current processing region attributes&lt;br /&gt;echo NORTH&lt;br /&gt;echo SOUTH&lt;br /&gt;echo EAST&lt;br /&gt;echo WEST&lt;br /&gt;echo WERES&lt;br /&gt;echo NSRES&lt;br /&gt;echo ROWS&lt;br /&gt;echo COLS&lt;br /&gt;&lt;br /&gt;// or the region itself&lt;br /&gt;echo ACTIVEREGION&lt;br /&gt;&lt;br /&gt;// get the coordinate at a given row and col&lt;br /&gt;def coordinate = coordinateFromRowCol(10, 15);&lt;br /&gt;echo coordinate;&lt;br /&gt;&lt;br /&gt;// get the nearest row and col to a given coordinate&lt;br /&gt;def rowCol = rowColFromCoordinate(688605.0, 5108595.0);&lt;br /&gt;echo rowCol;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* reading and writing GRASS maps&lt;br /&gt;*/&lt;br /&gt;def grassMapName = "bacino_brenta_pit";&lt;br /&gt;&lt;br /&gt;// get the full path of the map&lt;br /&gt;def fullPath = fullMapPath (grassMapName);&lt;br /&gt;echo fullPath;&lt;br /&gt;&lt;br /&gt;// read the map&lt;br /&gt;double[][] map = grassMapToMatrix (grassMapName);&lt;br /&gt;// and print the output to console&lt;br /&gt;printMap map&lt;br /&gt;&lt;br /&gt;// get the average value&lt;br /&gt;def avg = grassMapMax(grassMapName);&lt;br /&gt;echo avg&lt;br /&gt;// the same can be done for grassMapMin ,grassMapAvg, grassMapModa&lt;br /&gt;&lt;br /&gt;// get the value of a grass raster map at a given coordinate&lt;br /&gt;def value = valueOfGrassMapInCoordinate(grassMapName, 688605.0, 5108595.0);&lt;br /&gt;echo value;&lt;br /&gt;&lt;br /&gt;// write the matrix read before to a map named aaa&lt;br /&gt;def grassMapToWrite = "aaa";&lt;br /&gt;matrixToGrassMap (grassMapToWrite, map, -9999.0);&lt;br /&gt;&lt;br /&gt;// delete the map from disk&lt;br /&gt;deleteGrassMap grassMapToWrite;&lt;br /&gt;&lt;br /&gt;// load a map to be viewed&lt;br /&gt;loadGrassMap grassMapName;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* working with vector layers and shapefiles&lt;br /&gt;*/&lt;br /&gt;// get the list of features from a layer&lt;br /&gt;// that is loaded in the current active map&lt;br /&gt;def features = getFeaturesFromLayer("countries");&lt;br /&gt;features.each{ feature -&gt;&lt;br /&gt;// some features can be accessed directly on the feature,&lt;br /&gt;// like area, length or the coordinates of the geometry&lt;br /&gt;// as well as the centroid and the geometry itself&lt;br /&gt;echo feature.area;&lt;br /&gt;echo feature.length;&lt;br /&gt;echo feature.coordinates[0];&lt;br /&gt;echo feature.centroid;&lt;br /&gt;echo feature.getAttribute("FIPS_CNTRY");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// the same can be done from a shapefile&lt;br /&gt;def features = getFeaturesFromShapefile("D:\\data\\wb\\countries.shp");&lt;br /&gt;features.each{ feature -&gt;&lt;br /&gt;echo feature.area;&lt;br /&gt;echo feature.length;&lt;br /&gt;echo feature.coordinates[0];&lt;br /&gt;echo feature.centroid;&lt;br /&gt;echo feature.getAttribute("FIPS_CNTRY");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// cql filters can be used from layers&lt;br /&gt;def features = getFilteredFeaturesFromLayer("countries",&lt;br /&gt;  "INTERSECTS(the_geom, LINESTRING (11 41, 18 41))");&lt;br /&gt;features.each{ feature -&gt;&lt;br /&gt;echo feature.area;&lt;br /&gt;echo feature.length;&lt;br /&gt;echo feature.coordinates[0];&lt;br /&gt;echo feature.centroid;&lt;br /&gt;echo feature.getAttribute("FIPS_CNTRY");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// or again from shapefiles&lt;br /&gt;def features = getFilteredFeaturesFromShapefile("D:\\dat\\wb\\countries.shp",&lt;br /&gt;"LONG_NAME == 'Russia'");&lt;br /&gt;features.each{ feature -&gt;&lt;br /&gt;echo feature.area;&lt;br /&gt;echo feature.length;&lt;br /&gt;echo feature.coordinates[0];&lt;br /&gt;echo feature.centroid;&lt;br /&gt;echo feature.getAttribute("FIPS_CNTRY");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// statistics can be calculated on fields of the features&lt;br /&gt;// average of the field SQKM&lt;br /&gt;def avg = featuresLayerAvg("countries", "SQKM");&lt;br /&gt;echo avg;&lt;br /&gt;avg = shapefileAvg("D:\\data\\wb\\countries.shp", "SQKM");&lt;br /&gt;echo avg;&lt;br /&gt;&lt;br /&gt;// min of the field SQKM&lt;br /&gt;def min = featuresLayerMin("countries", "SQKM");&lt;br /&gt;echo min;&lt;br /&gt;min = shapefileMin("D:\\data\\wb\\countries.shp", "SQKM");&lt;br /&gt;echo min;&lt;br /&gt;&lt;br /&gt;// max of the field SQKM&lt;br /&gt;def max = featuresLayerMax("countries", "SQKM");&lt;br /&gt;echo max;&lt;br /&gt;max = shapefileMax("D:\\data\\wb\\countries.shp", "SQKM");&lt;br /&gt;echo max;&lt;br /&gt;&lt;br /&gt;// moda of the field SQKM&lt;br /&gt;def moda = shapefileModa("D:\\data\\wb\\countries.shp", "SQKM");&lt;br /&gt;echo moda;&lt;br /&gt;moda = featuresLayerModa("countries", "SQKM");&lt;br /&gt;echo moda;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* DATABASE COMMANDS (assuming table has two fields: id, name)&lt;br /&gt;*/&lt;br /&gt;// define the database connection&lt;br /&gt;# REMOTEDBURL = postgresql:192.168.1.102:5432:dbname:user:passwd&lt;br /&gt;&lt;br /&gt;// the table name&lt;br /&gt;def table = 'schema.tablename';&lt;br /&gt;&lt;br /&gt;// get the dataset and browse over it&lt;br /&gt;def ds = dataset( table );&lt;br /&gt;ds.each{&lt;br /&gt;// "name" is a db table field name and can be&lt;br /&gt;// used as variable to access the needed value&lt;br /&gt;echo it.id + "  " + it.name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// another way is to use select statements&lt;br /&gt;def rows = select ("* from " + table);&lt;br /&gt;rows.each{ row -&gt;&lt;br /&gt;echo row.id + "  " + row.name&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// which can contain also the where clause&lt;br /&gt;def rows1 = select ("* from " + table + " where name = 'coudiness'");&lt;br /&gt;rows1.each{ row -&gt;&lt;br /&gt;echo row.id + "  " + row.name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// for counting rows there is&lt;br /&gt;def num = count(table);&lt;br /&gt;echo num;&lt;br /&gt;// on which the where clause also works&lt;br /&gt;def num1 = count( table + " where name = 'coudiness'");&lt;br /&gt;echo num1;&lt;br /&gt;&lt;br /&gt;// for eveything else the database instance can be accessed&lt;br /&gt;// and any query can be executed&lt;br /&gt;DB.eachRow("select * from " + table){&lt;br /&gt;echo it.id + "  " + it.name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* data import and export&lt;br /&gt;*/&lt;br /&gt;// import an esri ascii grid to grass raster map&lt;br /&gt;importEsriAscii("C:\\TMP\\brenta2.asc", "testascii");&lt;br /&gt;&lt;br /&gt;// import a tiff to grass raster map&lt;br /&gt;importTiff("C:\\TMP\\brenta2.tif", "testtiff");&lt;br /&gt;&lt;br /&gt;// import grass raster map to an esri ascii grid&lt;br /&gt;exportEsriAscii("bacino_brenta_pit", "C:\\TMP\\brenta2");&lt;br /&gt;&lt;br /&gt;// import grass raster map to a tiff&lt;br /&gt;exportTiff("bacino_brenta_pit", "C:\\TMP\\brenta2");&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* the mapcalculator&lt;br /&gt;*/&lt;br /&gt;mapcalc {&lt;br /&gt;result "mapcalctest"&lt;br /&gt;function """&lt;br /&gt; if ("bacino_brenta_pit" &gt; 1200,&lt;br /&gt;    1.0,&lt;br /&gt;    "bacino_brenta_pit" / 2.0)&lt;br /&gt;"""&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7276239104798626800?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7276239104798626800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7276239104798626800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7276239104798626800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7276239104798626800'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/01/new-console-language-extentions.html' title='new console language extentions arriving'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6291129545991071920</id><published>2010-01-26T15:13:00.012+01:00</published><updated>2010-01-26T15:30:50.592+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netcdf'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Netcdf in JGrass, the non spatial part</title><content type='html'>JGrass at some point got integrated with the geotools library to read netcdf files both for visualization and for analysis purposes. The geotools library is a spatial library and therefore it gives the possibility to extract multi-time and multi-depth rastermaps from local file or remote opendap. We have seen that and it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/S175KXtouOI/AAAAAAABGyc/zracA2cAJqw/s1600-h/viewer_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 295px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/S175KXtouOI/AAAAAAABGyc/zracA2cAJqw/s400/viewer_01.png" alt="" id="BLOGGER_PHOTO_ID_5431052157214832866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, very soon we will have also a way to view the other datasets contained in a netcdf.&lt;br /&gt;&lt;br /&gt;The rightclick now brings up a new menu &lt;span style="font-weight: bold;"&gt;Open Netcdf Viewer on this dataset&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S175mnZRZ7I/AAAAAAABGyk/Y8E9mfvJJXE/s1600-h/viewer_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 295px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S175mnZRZ7I/AAAAAAABGyk/Y8E9mfvJJXE/s400/viewer_02.png" alt="" id="BLOGGER_PHOTO_ID_5431052642460723122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;which opens the Netcdf Viewer. The viewer has on its left a list of all the variables contained in the netcdf and that are non raster maps (grids). The variables are marked as:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;G: global attributes&lt;/li&gt;&lt;li&gt;0: 0 dimensional variables (scalars)&lt;/li&gt;&lt;li&gt;1: 1 dimensional variables&lt;/li&gt;&lt;li&gt;2: 2 dimensional variables&lt;/li&gt;&lt;li&gt;3: 3 dimensional variables&lt;/li&gt;&lt;/ul&gt;The below shows a global attribute selected. The right panel will show informations about the selected variable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S176ZgqloTI/AAAAAAABGys/JRrpI-mDUl4/s1600-h/viewer_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 295px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S176ZgqloTI/AAAAAAABGys/JRrpI-mDUl4/s400/viewer_03.png" alt="" id="BLOGGER_PHOTO_ID_5431053516827631922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the case of 0D variables, the variable definition is dumped.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/S1763jCcxWI/AAAAAAABGy8/VtW3MF8xcU4/s1600-h/viewer_05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/S1763jCcxWI/AAAAAAABGy8/VtW3MF8xcU4/s400/viewer_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431054032860661090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the case of 1D variables, it is already possible to chart the variable against its dimension (axis).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S176pwa83GI/AAAAAAABGy0/ZLVLgWXGpKA/s1600-h/viewer_04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S176pwa83GI/AAAAAAABGy0/ZLVLgWXGpKA/s400/viewer_04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431053795934919778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the case of 2D variables, again, the content can be charted. In the case the X axis contains time values, the proper time label is computed (those who know netcdf know what that means).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/S177TrnMOzI/AAAAAAABGzE/j8s7tsTL308/s1600-h/viewer_06.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/S177TrnMOzI/AAAAAAABGzE/j8s7tsTL308/s400/viewer_06.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431054516198587186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is possible to zoom into the charts and check the values.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/S177dP7VQqI/AAAAAAABGzM/Nr0BSZMCOEA/s1600-h/viewer_07.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/S177dP7VQqI/AAAAAAABGzM/Nr0BSZMCOEA/s400/viewer_07.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431054680565564066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The viewer currently supports up to 3 dimensions. In the upper combo boxes it is possible to switch the axes in the case of 2 or 3 dimensions available.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/S177tKL-yLI/AAAAAAABGzU/FVpg2o-eWrA/s1600-h/viewer_08.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/S177tKL-yLI/AAAAAAABGzU/FVpg2o-eWrA/s400/viewer_08.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431054953902688434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is also a filter box available for easier browsing of many variables. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S178OHVv0nI/AAAAAAABGzc/ov3nXGY8f2I/s1600-h/viewer_10.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S178OHVv0nI/AAAAAAABGzc/ov3nXGY8f2I/s400/viewer_10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431055520074027634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6291129545991071920?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6291129545991071920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6291129545991071920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6291129545991071920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6291129545991071920'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/01/netcdf-in-jgrass-non-spatial-part.html' title='Netcdf in JGrass, the non spatial part'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/S175KXtouOI/AAAAAAABGyc/zracA2cAJqw/s72-c/viewer_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2923843634321968848</id><published>2010-01-23T16:33:00.004+01:00</published><updated>2010-01-23T16:49:52.457+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sld'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>sld for rasters in a netcdf?</title><content type='html'>From today on uDig loads sld files also for raster data. This is great and a couple of posts ago I also described the style editor that can be used to create nice raster maps.&lt;br /&gt;&lt;br /&gt;I am currently working on netcdf data, which have a cool structure that allowes to have several rasters inside a file. What can be done in that case?&lt;br /&gt;Well the sld structure can contain several styles, so it is quite easy to create a style for every resource.&lt;br /&gt;&lt;br /&gt;For example the following sld file:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0"&amp;gt;&lt;br /&gt;   &amp;lt;sld:UserLayer&amp;gt;&lt;br /&gt;       &amp;lt;sld:LayerFeatureConstraints&amp;gt;&lt;br /&gt;           &amp;lt;sld:FeatureTypeConstraint/&amp;gt;&lt;br /&gt;       &amp;lt;/sld:LayerFeatureConstraints&amp;gt;&lt;br /&gt;       &amp;lt;sld:UserStyle&amp;gt;&lt;br /&gt;           &amp;lt;sld:Name&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;aspect&lt;/span&gt;&amp;lt;/sld:Name&amp;gt;&lt;br /&gt;           &amp;lt;sld:Title/&amp;gt;&lt;br /&gt;           &amp;lt;sld:FeatureTypeStyle&amp;gt;&lt;br /&gt;               &amp;lt;sld:Name&amp;gt;aspect&amp;lt;/sld:Name&amp;gt;&lt;br /&gt;               &amp;lt;sld:FeatureTypeName&amp;gt;Feature&amp;lt;/sld:FeatureTypeName&amp;gt;&lt;br /&gt;               &amp;lt;sld:SemanticTypeIdentifier&amp;gt;SemanticType[ANY]&amp;lt;/sld:SemanticTypeIdentifier&amp;gt;&lt;br /&gt;               &amp;lt;sld:Rule&amp;gt;&lt;br /&gt;                   &amp;lt;sld:RasterSymbolizer&amp;gt;&lt;br /&gt;                       &amp;lt;sld:Geometry&amp;gt;&lt;br /&gt;                           &amp;lt;ogc:PropertyName&amp;gt;raster&amp;lt;/ogc:PropertyName&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:Geometry&amp;gt;&lt;br /&gt;                       &amp;lt;sld:Opacity&amp;gt;&lt;br /&gt;                           &amp;lt;ogc:Literal&amp;gt;1.0&amp;lt;/ogc:Literal&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:Opacity&amp;gt;&lt;br /&gt;                       &amp;lt;sld:OverlapBehavior&amp;gt;&lt;br /&gt;                           &amp;lt;sld:RANDOM/&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:OverlapBehavior&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ColorMap type="ramp"&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#000000" opacity="1.0" quantity="0.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFFFFF" opacity="1.0" quantity="180.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFFFFF" opacity="1.0" quantity="180.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#000000" opacity="1.0" quantity="360.0"/&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:ColorMap&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ContrastEnhancement/&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ShadedRelief&amp;gt;&lt;br /&gt;                           &amp;lt;sld:BrightnessOnly&amp;gt;false&amp;lt;/sld:BrightnessOnly&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ReliefFactor&amp;gt;55&amp;lt;/sld:ReliefFactor&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:ShadedRelief&amp;gt;&lt;br /&gt;                   &amp;lt;/sld:RasterSymbolizer&amp;gt;&lt;br /&gt;               &amp;lt;/sld:Rule&amp;gt;&lt;br /&gt;           &amp;lt;/sld:FeatureTypeStyle&amp;gt;&lt;br /&gt;       &amp;lt;/sld:UserStyle&amp;gt;&lt;br /&gt;       &amp;lt;sld:UserStyle&amp;gt;&lt;br /&gt;           &amp;lt;sld:Name&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;surface_altitude&lt;/span&gt;&amp;lt;/sld:Name&amp;gt;&lt;br /&gt;           &amp;lt;sld:Title/&amp;gt;&lt;br /&gt;           &amp;lt;sld:FeatureTypeStyle&amp;gt;&lt;br /&gt;               &amp;lt;sld:Name&amp;gt;name&amp;lt;/sld:Name&amp;gt;&lt;br /&gt;               &amp;lt;sld:FeatureTypeName&amp;gt;Feature&amp;lt;/sld:FeatureTypeName&amp;gt;&lt;br /&gt;               &amp;lt;sld:SemanticTypeIdentifier&amp;gt;SemanticType[ANY]&amp;lt;/sld:SemanticTypeIdentifier&amp;gt;&lt;br /&gt;               &amp;lt;sld:Rule&amp;gt;&lt;br /&gt;                   &amp;lt;sld:RasterSymbolizer&amp;gt;&lt;br /&gt;                       &amp;lt;sld:Geometry&amp;gt;&lt;br /&gt;                           &amp;lt;ogc:PropertyName&amp;gt;raster&amp;lt;/ogc:PropertyName&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:Geometry&amp;gt;&lt;br /&gt;                       &amp;lt;sld:Opacity&amp;gt;&lt;br /&gt;                           &amp;lt;ogc:Literal&amp;gt;1.0&amp;lt;/ogc:Literal&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:Opacity&amp;gt;&lt;br /&gt;                       &amp;lt;sld:OverlapBehavior&amp;gt;&lt;br /&gt;                           &amp;lt;sld:RANDOM/&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:OverlapBehavior&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ColorMap type="ramp"&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00BFBF" opacity="1.0" quantity="2012.86"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00FF00" opacity="1.0" quantity="2096.901999816894"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00FF00" opacity="1.0" quantity="2096.901999816894"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFFF00" opacity="1.0" quantity="2180.9439996337887"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFFF00" opacity="1.0" quantity="2180.9439996337887"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FF7F00" opacity="1.0" quantity="2264.986007080078"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FF7F00" opacity="1.0" quantity="2264.986007080078"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#BF7F3F" opacity="1.0" quantity="2349.027999267578"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#BF7F3F" opacity="1.0" quantity="2349.027999267578"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#141514" opacity="1.0" quantity="2433.069991455078"/&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:ColorMap&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ContrastEnhancement/&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ShadedRelief&amp;gt;&lt;br /&gt;                           &amp;lt;sld:BrightnessOnly&amp;gt;false&amp;lt;/sld:BrightnessOnly&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:ShadedRelief&amp;gt;&lt;br /&gt;                   &amp;lt;/sld:RasterSymbolizer&amp;gt;&lt;br /&gt;               &amp;lt;/sld:Rule&amp;gt;&lt;br /&gt;           &amp;lt;/sld:FeatureTypeStyle&amp;gt;&lt;br /&gt;       &amp;lt;/sld:UserStyle&amp;gt;&lt;br /&gt;       &amp;lt;sld:UserStyle&amp;gt;&lt;br /&gt;           &amp;lt;sld:Name&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;d8scheme_drainage_directions&lt;/span&gt;&amp;lt;/sld:Name&amp;gt;&lt;br /&gt;           &amp;lt;sld:Title/&amp;gt;&lt;br /&gt;           &amp;lt;sld:FeatureTypeStyle&amp;gt;&lt;br /&gt;               &amp;lt;sld:Name&amp;gt;name&amp;lt;/sld:Name&amp;gt;&lt;br /&gt;               &amp;lt;sld:FeatureTypeName&amp;gt;Feature&amp;lt;/sld:FeatureTypeName&amp;gt;&lt;br /&gt;               &amp;lt;sld:SemanticTypeIdentifier&amp;gt;SemanticType[ANY]&amp;lt;/sld:SemanticTypeIdentifier&amp;gt;&lt;br /&gt;               &amp;lt;sld:Rule&amp;gt;&lt;br /&gt;                   &amp;lt;sld:RasterSymbolizer&amp;gt;&lt;br /&gt;                       &amp;lt;sld:Geometry&amp;gt;&lt;br /&gt;                           &amp;lt;ogc:PropertyName&amp;gt;raster&amp;lt;/ogc:PropertyName&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:Geometry&amp;gt;&lt;br /&gt;                       &amp;lt;sld:Opacity&amp;gt;&lt;br /&gt;                           &amp;lt;ogc:Literal&amp;gt;1.0&amp;lt;/ogc:Literal&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:Opacity&amp;gt;&lt;br /&gt;                       &amp;lt;sld:OverlapBehavior&amp;gt;&lt;br /&gt;                           &amp;lt;sld:RANDOM/&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:OverlapBehavior&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ColorMap type="ramp"&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFFF00" opacity="1.0" quantity="1.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFFF00" opacity="1.0" quantity="1.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00FF00" opacity="1.0" quantity="2.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00FF00" opacity="1.0" quantity="2.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00FFFF" opacity="1.0" quantity="3.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#00FFFF" opacity="1.0" quantity="3.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FF00FF" opacity="1.0" quantity="4.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FF00FF" opacity="1.0" quantity="4.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#0000FF" opacity="1.0" quantity="5.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#0000FF" opacity="1.0" quantity="5.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#A020F0" opacity="1.0" quantity="6.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#A020F0" opacity="1.0" quantity="6.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFA500" opacity="1.0" quantity="7.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FFA500" opacity="1.0" quantity="7.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#1E90FF" opacity="1.0" quantity="8.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#1E90FF" opacity="1.0" quantity="8.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FF0000" opacity="1.0" quantity="10.0"/&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ColorMapEntry color="#FF0000" opacity="1.0" quantity="10.0"/&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:ColorMap&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ContrastEnhancement/&amp;gt;&lt;br /&gt;                       &amp;lt;sld:ShadedRelief&amp;gt;&lt;br /&gt;                           &amp;lt;sld:BrightnessOnly&amp;gt;false&amp;lt;/sld:BrightnessOnly&amp;gt;&lt;br /&gt;                           &amp;lt;sld:ReliefFactor&amp;gt;55&amp;lt;/sld:ReliefFactor&amp;gt;&lt;br /&gt;                       &amp;lt;/sld:ShadedRelief&amp;gt;&lt;br /&gt;                   &amp;lt;/sld:RasterSymbolizer&amp;gt;&lt;br /&gt;               &amp;lt;/sld:Rule&amp;gt;&lt;br /&gt;           &amp;lt;/sld:FeatureTypeStyle&amp;gt;&lt;br /&gt;       &amp;lt;/sld:UserStyle&amp;gt;&lt;br /&gt;   &amp;lt;/sld:UserLayer&amp;gt;&lt;br /&gt;&amp;lt;/sld:StyledLayerDescriptor&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;gives me the possibility to load from sld file automatically the styles for the layers aspect, d8scheme_drainage_direction and surface_altitude.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S1saXJECfZI/AAAAAAABGyQ/Y3bedgibUIs/s1600-h/netcdf_style.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S1saXJECfZI/AAAAAAABGyQ/Y3bedgibUIs/s400/netcdf_style.png" alt="" id="BLOGGER_PHOTO_ID_5429962760597437842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The not so friendly thing is that for now to have multiple styles inside the sld file, you have to paste them from the raster style editor. But once done you are fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2923843634321968848?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2923843634321968848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2923843634321968848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2923843634321968848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2923843634321968848'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/01/sld-for-rasters-in-netcdf.html' title='sld for rasters in a netcdf?'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/S1saXJECfZI/AAAAAAABGyQ/Y3bedgibUIs/s72-c/netcdf_style.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-9140542016432407045</id><published>2010-01-20T13:44:00.004+01:00</published><updated>2010-01-20T13:52:35.927+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='devel'/><title type='text'>maven-ant-task and the misleading errors</title><content type='html'>Today I ran the refresh.xml from the udig libs plugin again to get back in sync with the current development. And I got an error about some ant task that can't be executed... ugh, it is not the first time.... wont be the last. Since my mind does not want to remember and this fools me every time, this time I document it. :)&lt;br /&gt;&lt;br /&gt;What happens is that to execute ant tasks, the maven-ant-tasks package is used, which the uDig community holds inside the code trunk in:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;trunk/extras/org.apache.maven-ant-tasks/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So we are usually fine, the only thing is that from time to time, the jar: &lt;span style="font-weight: bold;"&gt;maven-ant-tasks-2.1.0.jar&lt;/span&gt;, currently at version 2.1.0 is updated and eclipse doesn't know were to find it any more.&lt;br /&gt;&lt;br /&gt;Well, here is how to set it: preferences-&gt; ant -&gt; runtime&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/S1b8Ar6B1bI/AAAAAAABGyE/R4P6FfuMs6k/s1600-h/maven_ant_task.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 180px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/S1b8Ar6B1bI/AAAAAAABGyE/R4P6FfuMs6k/s400/maven_ant_task.png" alt="" id="BLOGGER_PHOTO_ID_5428803489558025650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;simply check that your path is set to a jar that really exists. If not, remove and add the existing jar (add external jar).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-9140542016432407045?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/9140542016432407045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=9140542016432407045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/9140542016432407045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/9140542016432407045'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2010/01/maven-ant-task-and-misleading-errors.html' title='maven-ant-task and the misleading errors'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/S1b8Ar6B1bI/AAAAAAABGyE/R4P6FfuMs6k/s72-c/maven_ant_task.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2827597440658619800</id><published>2009-12-24T12:56:00.007+01:00</published><updated>2009-12-24T13:10:09.033+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Getting smarter... the Xmas query tool</title><content type='html'>The transition to use coverages at internal level in JGrass, to be more compatible with geotools slowly proves that the hard work done (and ongoing) is worth the price.&lt;br /&gt;&lt;br /&gt;One example for this is what was known as the &lt;span style="font-weight: bold;"&gt;Raster Query Tool&lt;/span&gt; which was used to query grass raster layers, as shown in this picture:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SzNXg9ll2dI/AAAAAAABD-g/eljTMR6pUEk/s1600-h/grass.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 269px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SzNXg9ll2dI/AAAAAAABD-g/eljTMR6pUEk/s400/grass.png" alt="" id="BLOGGER_PHOTO_ID_5418771000456501714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well, we now decided to make it a bit smarter, such that it would understand the underlying raster layer.&lt;br /&gt;&lt;br /&gt;The Smart query tool can now be found here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SzNYGDfDwSI/AAAAAAABD-w/0mOZ4Dl4NSs/s1600-h/tool.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 122px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SzNYGDfDwSI/AAAAAAABD-w/0mOZ4Dl4NSs/s400/tool.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418771637694873890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The following image shows a query done on a tiff layer:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SzNX6h2pKcI/AAAAAAABD-o/AxXtNCwP81A/s1600-h/tiff.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SzNX6h2pKcI/AAAAAAABD-o/AxXtNCwP81A/s400/tiff.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418771439688427970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But what makes me really happy is the way it is able to query layers that depend on time and depth, as for example a netcdf layer. The result look like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SzNYZi4UvHI/AAAAAAABD-4/CW6qay_UxAI/s1600-h/netcdf.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SzNYZi4UvHI/AAAAAAABD-4/CW6qay_UxAI/s400/netcdf.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418771972539858034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What happens is that the values are shown along the Y axis, while time and depth along the X axis. Well, in the case in which the dataset depends on both, time is shown along the X axis and a chart is created for every depth available. The charts can also be switched on and off for better understanding.&lt;br /&gt;&lt;br /&gt;To be even smarter, we enabled the tool to work also on feature layers, by showing the attributes and some additional informations depending on the geometry type (such as number of nodes, centroid, area, etc):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SzNZBdKxEWI/AAAAAAABD_A/N3U6l3aYiCw/s1600-h/features.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SzNZBdKxEWI/AAAAAAABD_A/N3U6l3aYiCw/s400/features.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418772658201366882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What happens if several layers are selected? Depends on the layer types, anyways, the case of feature and coverage ones is not handled really well, it shows popups in a pile. For sure you get the info you wanted, you just have to browse it :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;So happy Christmas to everyone and a great great new JGrass year!!!!!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2827597440658619800?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2827597440658619800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2827597440658619800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2827597440658619800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2827597440658619800'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/getting-smarter-xmas-query-tool.html' title='Getting smarter... the Xmas query tool'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/SzNXg9ll2dI/AAAAAAABD-g/eljTMR6pUEk/s72-c/grass.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3625758851254972109</id><published>2009-12-08T02:00:00.006+01:00</published><updated>2009-12-08T02:11:31.592+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='gps'/><title type='text'>Arcmap dbf import to BeeGIS</title><content type='html'>Recently we did a 3 days uDig-JGrass-BeeGIS course for some very nice guys. When they saw BeeGIS, they were very intereted and one question that came to the surface by one guy owning a handheld with arcmap, was if it would be possible to import the arcpad file into the database of BeeGIS, in order to exploit it to &lt;a href="http://jgrasstechtips.blogspot.com/2009/05/anatomy-of-field-mapping.html"&gt;synchronise pictures on the map&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Well, since they really where that nice, we created a small import tool for BeeGIS.&lt;br /&gt;You should know that from arcpad you can export a point shapefile, which has a big attribute table with all the infos in it.&lt;br /&gt;The below is an example:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2mw-GnADI/AAAAAAABD6Q/Wg1N5OJARm0/s1600-h/arcpad01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 289px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2mw-GnADI/AAAAAAABD6Q/Wg1N5OJARm0/s400/arcpad01.png" alt="" id="BLOGGER_PHOTO_ID_5412665687403855922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To use it just follow the steps:&lt;br /&gt;&lt;br /&gt;1) Go to File -&gt; import and select "Import Arcpad..."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2nAe0RWHI/AAAAAAABD6Y/WIIFko2B0B4/s1600-h/arcpad02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2nAe0RWHI/AAAAAAABD6Y/WIIFko2B0B4/s400/arcpad02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412665953883347058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) In the following tab insert the path to the dbf file exported from Arcpad&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sx2nL29IFsI/AAAAAAABD6g/2SNFJlkIUmE/s1600-h/arcpad03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sx2nL29IFsI/AAAAAAABD6g/2SNFJlkIUmE/s400/arcpad03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412666149341501122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After pushing finish the dbf is imported into the database's internal gps log, which is also use for the photo sync.&lt;br /&gt;&lt;br /&gt;In fact if we have a look into the database view, we can see that the imported data are there:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2ngtcY6BI/AAAAAAABD6o/hoHx1UbhXzc/s1600-h/arcpad04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2ngtcY6BI/AAAAAAABD6o/hoHx1UbhXzc/s400/arcpad04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412666507565525010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Guess that will make it into the next build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3625758851254972109?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3625758851254972109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3625758851254972109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3625758851254972109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3625758851254972109'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/arcmap-dbf-import-to-beegis.html' title='Arcmap dbf import to BeeGIS'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/Sx2mw-GnADI/AAAAAAABD6Q/Wg1N5OJARm0/s72-c/arcpad01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3564900448473636830</id><published>2009-12-05T09:50:00.001+01:00</published><updated>2009-12-05T09:52:14.166+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='licenses'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>EPL-GPL: Open letter to the FSFEurope</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;Since I have enough of not knowing exactly how to deal with the&lt;br /&gt;EPL-GPL problem, I am going to write to the FSFEurope for&lt;br /&gt;clarification.&lt;br /&gt;&lt;br /&gt;The letter I will send is placed here:&lt;br /&gt;&lt;a href="http://jgrass.wiki.software.bz.it/jgrass/Open_letter_to_the_fSFEurope" target="_blank" style="color: rgb(119, 153, 187);"&gt;http://jgrass.wiki.software.&lt;wbr&gt;bz.it/jgrass/Open_letter_to_&lt;wbr&gt;the_fSFEurope&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It will for sure change during the next days, but I plan to send it by&lt;br /&gt;mid of next week.&lt;br /&gt;&lt;br /&gt;Constructive comment are welcome!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3564900448473636830?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3564900448473636830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3564900448473636830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3564900448473636830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3564900448473636830'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/epl-gpl-open-letter-to-fsfeurope.html' title='EPL-GPL: Open letter to the FSFEurope'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-8473098228485931208</id><published>2009-12-05T00:54:00.003+01:00</published><updated>2009-12-05T01:02:53.684+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>New BeeGIS version available</title><content type='html'>It has taken a real long while, but finally a new BeeGIS version is out. It has a lot of enhancements and fixes that would take me too long to explain. One real important thing is that now we have a manual. Also now BeeGIS has not JGrass dependencies and as such can be installed into uDig directly.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jgrass.wiki.software.bz.it/jgrass/Installation#head-67bd727d89e81592399ce5fad1b6cd358e7017e2"&gt;For installation instructions have a look here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.fsc.bz.it/download/get_file.php?id=435"&gt;You can download the manual here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxmjBQKZCwI/AAAAAAABD6I/R6kNegvn4dQ/s1600-h/bee.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 166px; height: 222px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxmjBQKZCwI/AAAAAAABD6I/R6kNegvn4dQ/s400/bee.png" alt="" id="BLOGGER_PHOTO_ID_5411535669176109826" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-8473098228485931208?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/8473098228485931208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=8473098228485931208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8473098228485931208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8473098228485931208'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/new-beegis-version-available.html' title='New BeeGIS version available'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/SxmjBQKZCwI/AAAAAAABD6I/R6kNegvn4dQ/s72-c/bee.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-599767780625242931</id><published>2009-12-04T22:40:00.008+01:00</published><updated>2009-12-04T23:44:48.473+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='osm'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Moving a little step closer to OSM</title><content type='html'>It is a while that I wanted to create some tools to support Openstreetmap in BeeGIS in order to be able to upload digitalized field data to OSM. &lt;br /&gt;&lt;br /&gt;Well, a little step was done now, which is a shapefile to osm exporter. As so often happens I didn't do anything great here, but I used to magnificent powers of open source and borrowed it from Ian Dees &lt;a href="http://redmine.yellowbkpk.com/projects/show/geo"&gt;shp-to-osm&lt;/a&gt; project which luckily is written in java.&lt;br /&gt;&lt;br /&gt;How to use it? It is wrapped together with dxf, dwg and kml import in the vector import/export plugin, which can be found &lt;a href="http://jgrass.wiki.software.bz.it/jgrass/Vector_Import_Export_Plugin"&gt;here with installation instruction&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The rest is easy.&lt;br /&gt;&lt;br /&gt;1) assume I have 3 layers of Points, MultiLines and MultiPolygons&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SxmPbYhLGKI/AAAAAAABD5Y/mXgJDAh4oDQ/s1600-h/osm_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 289px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SxmPbYhLGKI/AAAAAAABD5Y/mXgJDAh4oDQ/s400/osm_01.png" alt="" id="BLOGGER_PHOTO_ID_5411514127863191714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) File -&gt; export -&gt; Openstreetmap export&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxmPofwB0PI/AAAAAAABD5g/JCZuP4S1baI/s1600-h/osm_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxmPofwB0PI/AAAAAAABD5g/JCZuP4S1baI/s400/osm_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411514353142845682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Choose the shapefile, and output folder&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxmP824G37I/AAAAAAABD5o/lGzeMA-v8Lg/s1600-h/osm_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxmP824G37I/AAAAAAABD5o/lGzeMA-v8Lg/s400/osm_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411514702948130738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A bunch of osm files will be created in the output folder.&lt;br /&gt;&lt;br /&gt;4) Open JOSM and import them&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxmQL1ULGCI/AAAAAAABD5w/UJcxTXf--Wg/s1600-h/osm_04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxmQL1ULGCI/AAAAAAABD5w/UJcxTXf--Wg/s400/osm_04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411514960227014690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since they are just points, you won't see that much, right?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SxmQWQ7yQkI/AAAAAAABD54/oUcj5AQF3QE/s1600-h/osm_05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SxmQWQ7yQkI/AAAAAAABD54/oUcj5AQF3QE/s400/osm_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411515139439608386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But if I do the same with the line and polygon layer and then import all the osm files created, it looks prettier:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxmQizdWeHI/AAAAAAABD6A/Yi3ImOKXkuE/s1600-h/osm_06.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxmQizdWeHI/AAAAAAABD6A/Yi3ImOKXkuE/s400/osm_06.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5411515354865629298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next will be do the export directly from feature layer, which could be backed by any datastore, shapefile, postgis or whatever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-599767780625242931?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/599767780625242931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=599767780625242931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/599767780625242931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/599767780625242931'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/moving-little-step-closer-to-osm.html' title='Moving a little step closer to OSM'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/SxmPbYhLGKI/AAAAAAABD5Y/mXgJDAh4oDQ/s72-c/osm_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6407319686542473397</id><published>2009-12-02T13:03:00.015+01:00</published><updated>2009-12-02T13:27:07.507+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='raster'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Is raster styling finally coming to uDig?</title><content type='html'>As JGrass gets more and more into uDig, we are starting to need decent styling for rasters that are based on physical data.&lt;br /&gt;For example if you now load a geotiff that contains novalues into udig, you will get this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxZX-wZd1SI/AAAAAAABCss/q6i-wpFTML0/s1600-h/tiff_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxZX-wZd1SI/AAAAAAABCss/q6i-wpFTML0/s400/tiff_01.png" alt="" id="BLOGGER_PHOTO_ID_5410608737987450146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For JGrass maps we always had our own styleing way, but now things will change, since we are porting everything to the coverage engine of uDig.&lt;br /&gt;It is quite obvious that the above map doesn't help that much :)&lt;br /&gt;&lt;br /&gt;Luckily we have a customer (that for now has to be hidden) that is paying for better raster styling.&lt;br /&gt;&lt;br /&gt;The first tests are already so nice, that I needed to share them.&lt;br /&gt;&lt;br /&gt;Well, let's go back to our geotiff.&lt;br /&gt;&lt;br /&gt;If I open the style editor, now I am presented the typical JGrass raster styler. Since currently the sld file, if available, is not read, the panel of colorrules will be empty. There is a reset button that helps, by getting the extrema from the map and proposing a greyscale colortable:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZZCTNofCI/AAAAAAABCs0/Q4g4ppSM0OE/s1600-h/tiff_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZZCTNofCI/AAAAAAABCs0/Q4g4ppSM0OE/s400/tiff_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410609898384292898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Grayscale is already better than the first result, but I prefer colors...&lt;br /&gt;Ok, there are a bunch of buttons to add rules and define their colors and range values by hand... but we are lazy, so for our lazy friends we made a chombobox of predefined colortables.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZZaPgVKII/AAAAAAABCs8/Mor6WWZd1bo/s1600-h/tiff_03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 328px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZZaPgVKII/AAAAAAABCs8/Mor6WWZd1bo/s400/tiff_03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410610309705836674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For example by choosing the elevation table, I will get:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SxZZlDdaQiI/AAAAAAABCtE/rPlinn5R_Lk/s1600-h/tiff_04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SxZZlDdaQiI/AAAAAAABCtE/rPlinn5R_Lk/s400/tiff_04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410610495450923554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The elevation colormap proposes a set of colorrules, equally interpolated between the extrema of the map. I can also decide to disable some of the rules and engine will ignore them producing:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SxZZ-zoHlNI/AAAAAAABCtM/AYG-ZROPB9k/s1600-h/tiff_05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SxZZ-zoHlNI/AAAAAAABCtM/AYG-ZROPB9k/s400/tiff_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410610937877468370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Did you think it would produce a whole? No, it just interpolates between the active rules. But yes, you can produce a whole just by setting the opacity of the rule to some transparency, as for example to 0.5:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxZaWeYTF6I/AAAAAAABCtU/UIcn3hy3mLw/s1600-h/tiff_06.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxZaWeYTF6I/AAAAAAABCtU/UIcn3hy3mLw/s400/tiff_06.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410611344490829730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;or maybe really to 0.0 to achive the whole?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZaq-uGJ3I/AAAAAAABCtc/XZcc9lnIez0/s1600-h/tiff_07.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZaq-uGJ3I/AAAAAAABCtc/XZcc9lnIez0/s400/tiff_07.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410611696769574770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And yes, the slider in the lower part gives general transparency:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SxZa21dYwaI/AAAAAAABCtk/IaNakE6bt-0/s1600-h/tiff_08.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SxZa21dYwaI/AAAAAAABCtk/IaNakE6bt-0/s400/tiff_08.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410611900442001826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cool, what else can we do?&lt;br /&gt;Do you use tecnical maps? Not? The ones with all the nice informations in black on white background:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SxZbMN13iYI/AAAAAAABCts/v1wBBDn-VD4/s1600-h/ctp_01.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SxZbMN13iYI/AAAAAAABCts/v1wBBDn-VD4/s400/ctp_01.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5410612267764386178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;well the greatest thing would be to be able to make the white part transparent, the black part white (or any visible color) and overlay that over an ortophoto.&lt;br /&gt;&lt;br /&gt;Ok, so open the styleeditor and push reset to see what values are contained:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZbsfScumI/AAAAAAABCt0/mclq7UO0SnU/s1600-h/ctp_02.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 387px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZbsfScumI/AAAAAAABCt0/mclq7UO0SnU/s400/ctp_02.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5410612822203480674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sure, as we expected, it is a bitmap. 1 is something and 0 is something. So let us chose one of the proposed colortables:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SxZb8tyECLI/AAAAAAABCt8/0MMXFaYwwPY/s1600-h/ctp_03.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 398px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SxZb8tyECLI/AAAAAAABCt8/0MMXFaYwwPY/s400/ctp_03.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5410613100972083378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yeah, that now has the blacks part converted to white. To remove the black part, we can just disable the colorrule or make it transparent, remember?&lt;br /&gt;Well, since the maps background is white, I will now propose a red drawing and transparent background:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZcd4naa3I/AAAAAAABCuE/3UP359VNf9A/s1600-h/ctp_05.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxZcd4naa3I/AAAAAAABCuE/3UP359VNf9A/s400/ctp_05.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5410613670815886194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Easy, right?&lt;br /&gt;&lt;br /&gt;This has all been done on one band maps were this kind of colormaps make sense.&lt;br /&gt;I hope to get that soon into uDig, since I have really missed this...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6407319686542473397?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6407319686542473397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6407319686542473397' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6407319686542473397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6407319686542473397'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/is-raster-styling-finally-coming-to.html' title='Is raster styling finally coming to uDig?'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/SxZX-wZd1SI/AAAAAAABCss/q6i-wpFTML0/s72-c/tiff_01.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7872328257091929453</id><published>2009-12-01T09:43:00.008+01:00</published><updated>2009-12-01T09:55:11.508+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>New CSV import interface</title><content type='html'>I know I should be writing a wrapup of Foss4G at Sydney and the the week afetr that GFOSS (the Italian local chapter), but coding is definitely more fun... uff&lt;br /&gt;&lt;br /&gt;Well, at the last mixed uDig-JGrass-BeeGIS course we gave one recurring thing came out. People still use to have csv files and need to import them into GIS a LOT!!!&lt;br /&gt;For those who do not know, CSV stands for comma separated values and is a text file that looks like:&lt;br /&gt;&lt;br /&gt;705305.932992739,5120058.63261393,1119,Caoria&lt;br /&gt;661379.517932081,5119555.28429439,1050,Mezzolombardo&lt;br /&gt;664079.406089368,5144854.34099646,1032,Fondo&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;So this morning I decided to add a new interface for that in JGrass. I hope it will be accepted quickly in uDig so that it goes into there.&lt;br /&gt;&lt;br /&gt;How does it work now?&lt;br /&gt;&lt;br /&gt;1) File -&gt; Import and then choose &lt;span style="font-style: italic; font-weight: bold;"&gt;CSV import&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxTYKs6hM8I/AAAAAAABCsE/Hn-jvrSgEYE/s1600/01wizard.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 382px; height: 400px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxTYKs6hM8I/AAAAAAABCsE/Hn-jvrSgEYE/s400/01wizard.png" alt="" id="BLOGGER_PHOTO_ID_5410186730745705410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Browse for the file to import and choose the separator character/string.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxTY3QiRQbI/AAAAAAABCsM/zJK4G_f8lgk/s1600/02wizard.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 382px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxTY3QiRQbI/AAAAAAABCsM/zJK4G_f8lgk/s400/02wizard.png" alt="" id="BLOGGER_PHOTO_ID_5410187496221917618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The preview in the lower part helps you to see what is going on and also gives you the possibility to choose a type for the various fields, as well as the name. Remember that an X and an Y are mandatory.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxTY-7f3qLI/AAAAAAABCsU/uJjMvQnjuCA/s1600/03wizard.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 382px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxTY-7f3qLI/AAAAAAABCsU/uJjMvQnjuCA/s400/03wizard.png" alt="" id="BLOGGER_PHOTO_ID_5410187628013660338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SxTZFsKI2GI/AAAAAAABCsc/5--dfbwwlvY/s1600/04wizard.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 382px; height: 400px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SxTZFsKI2GI/AAAAAAABCsc/5--dfbwwlvY/s400/04wizard.png" alt="" id="BLOGGER_PHOTO_ID_5410187744155064418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) Choose the coordinate system and push finish.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SxTZZ3jQD9I/AAAAAAABCsk/A8jOItSaBig/s1600/05imported.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SxTZZ3jQD9I/AAAAAAABCsk/A8jOItSaBig/s400/05imported.png" alt="" id="BLOGGER_PHOTO_ID_5410188090810568658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nothing new obviously, but that was definitely missing in the uDig family.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7872328257091929453?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7872328257091929453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7872328257091929453' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7872328257091929453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7872328257091929453'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/12/new-csv-import-interface.html' title='New CSV import interface'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/SxTYKs6hM8I/AAAAAAABCsE/Hn-jvrSgEYE/s72-c/01wizard.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5144030128655001329</id><published>2009-10-10T13:08:00.006+02:00</published><updated>2009-10-10T13:16:47.796+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vector'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Some dxf/dwg screens</title><content type='html'>Just some screens taken from the import of dxf and dwg files.&lt;br /&gt;Note that the dwg files are badly supported, they cover &lt; Acad2000 and I think not every case.. &lt;br /&gt;&lt;br /&gt;Cadastral files are one good example that here is delivered only in dxf format. Seems to work well finally:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/StBrpnFR74I/AAAAAAAABY0/68yLee2aEiw/s1600-h/dxf_catasto.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 274px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/StBrpnFR74I/AAAAAAAABY0/68yLee2aEiw/s400/dxf_catasto.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5390927116572422018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/StBrwoQHLzI/AAAAAAAABY8/B3pN4Gvpsew/s1600-h/dxf_catasto_02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 274px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/StBrwoQHLzI/AAAAAAAABY8/B3pN4Gvpsew/s400/dxf_catasto_02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5390927237145374514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And an example of dwg, where due to the complexity of the different dwg internal types, I preferred to create 3 shapefile for evey type of data and set the layer name as an attribute, so one can select-copy/export the features to other layers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/StBsjlk5SBI/AAAAAAAABZE/x-BxGKKmmAU/s1600-h/dwg_taggia.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 274px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/StBsjlk5SBI/AAAAAAAABZE/x-BxGKKmmAU/s400/dwg_taggia.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5390928112600565778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Much has still to be tested. If you want your files tested, please send them to me, I would be glad to fix problems if I am able.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5144030128655001329?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5144030128655001329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5144030128655001329' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5144030128655001329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5144030128655001329'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/10/some-dxfdwg-screens.html' title='Some dxf/dwg screens'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VHcYLjUYssM/StBrpnFR74I/AAAAAAAABY0/68yLee2aEiw/s72-c/dxf_catasto.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4675872521030883731</id><published>2009-10-09T23:29:00.007+02:00</published><updated>2009-10-10T13:40:02.289+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vector'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Dxf (and Dwg) in JGrass?</title><content type='html'>In our engineers job we get in tought much too often with dwg and dxf data. And much too often I told myself (and was told by my colleague Silli) that I should finally port the dxf/dwg import tool that the old JGrass borrowed from the gvSig community.&lt;br /&gt;&lt;br /&gt;And here is finally the first step. The dxf import:&lt;br /&gt;&lt;br /&gt;1) got to the usual import menu and find the dxf/dwg import&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/StByay72FEI/AAAAAAAABZM/AAwjc1X7j44/s1600-h/dxf_dwg.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/StByay72FEI/AAAAAAAABZM/AAwjc1X7j44/s400/dxf_dwg.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5390934558637429826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) choose dxf import and insert the dxf file to be imported and the new shapefile to be created. Since dxf has no idea about projection, choose also a projection for the imported data.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/Ss-sf9KfcuI/AAAAAAAABYk/kxmL7vMUcSw/s1600-h/dxf_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 340px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/Ss-sf9KfcuI/AAAAAAAABYk/kxmL7vMUcSw/s400/dxf_02.png" alt="" id="BLOGGER_PHOTO_ID_5390716943980262114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) push finish and wait. One layer will be created for every internal layer of the dxf file, with the data type that better suits the jts type. In this case I only had a road network:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/Ss-s26Woz6I/AAAAAAAABYs/MfnNknlaVYw/s1600-h/dxf_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 243px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/Ss-s26Woz6I/AAAAAAAABYs/MfnNknlaVYw/s400/dxf_03.png" alt="" id="BLOGGER_PHOTO_ID_5390717338362892194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now have to test other types and files. Then it's dwg funtime (I hate those proprietary formats!). And then it all goes into uDig. Still have to think how though, since the license of this plugin has to stay GPL because of its prior licensing. Hmmmm....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4675872521030883731?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4675872521030883731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4675872521030883731' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4675872521030883731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4675872521030883731'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/10/dxf-and-dwg-in-jgrass.html' title='Dxf (and Dwg) in JGrass?'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/StByay72FEI/AAAAAAAABZM/AAwjc1X7j44/s72-c/dxf_dwg.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6848210919320028023</id><published>2009-09-24T13:33:00.002+02:00</published><updated>2009-09-24T13:41:03.153+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netcdf'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>RAMADDA, take two: browsing the tree</title><content type='html'>Assume you have a Ramadda server with some groups created and some data uploaded, something that look like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SrtZgGHhK5I/AAAAAAAABXk/Vfysc1mT8V0/s1600-h/ramadda_tree.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 282px; height: 385px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SrtZgGHhK5I/AAAAAAAABXk/Vfysc1mT8V0/s400/ramadda_tree.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5384996187384392594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Want to access it programmatically and browse it? Here is the code to do so, shown in an example that traverses the repository tree and prints out all of the entries.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The main dump method:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Dumps the tree of the repository.&lt;br /&gt;     * &lt;br /&gt;     * @throws Exception&lt;br /&gt;     */&lt;br /&gt;    public void dumpTree() throws Exception {&lt;br /&gt;        List postEntries = new ArrayList();&lt;br /&gt;        postEntries.add(HttpFormEntry.hidden(ARG_SESSIONID, repositoryClient.getSessionId()));&lt;br /&gt;        postEntries.add(HttpFormEntry.hidden(ARG_OUTPUT, "xml.xml"));&lt;br /&gt;        String[] result = repositoryClient.doPost(repositoryClient.URL_ENTRY_SHOW, postEntries);&lt;br /&gt;        if (result[0] != null) {&lt;br /&gt;            System.err.println("Error:" + result[0]);&lt;br /&gt;        }&lt;br /&gt;        outputStream.println(result[1]);&lt;br /&gt;        Element response = XmlUtil.getRoot(result[1]);&lt;br /&gt;&lt;br /&gt;        // the root id&lt;br /&gt;        String entryId = response.getAttribute("id");&lt;br /&gt;        ClientEntry rootEntry = repositoryClient.getEntry(entryId);&lt;br /&gt;        outputStream.println(entryToString(rootEntry));&lt;br /&gt;&lt;br /&gt;        dumpRecursive(rootEntry, TAB);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The recursive method and the toString method:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Recursively traverses the entries and dumps its childs and subchilds.&lt;br /&gt;     * &lt;br /&gt;     * @param entry the start entry.&lt;br /&gt;     * @param tab the tabulator characters to use.&lt;br /&gt;     * @throws Exception&lt;br /&gt;     */&lt;br /&gt;    private void dumpRecursive( ClientEntry entry, String tab ) throws Exception {&lt;br /&gt;        List childEntries = getChildEntries(entry.getId());&lt;br /&gt;        for( int i = 0; i &lt; childEntries.size(); i++ ) {&lt;br /&gt;            ClientEntry childEntry = childEntries.get(i);&lt;br /&gt;            outputStream.println(tab + entryToString(childEntry));&lt;br /&gt;            dumpRecursive(childEntry, tab + tab);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Extract some base information from the {@link ClientEntry entry}.&lt;br /&gt;     * &lt;br /&gt;     * @param entry the entry.&lt;br /&gt;     * @return the string representation.&lt;br /&gt;     */&lt;br /&gt;    public String entryToString( ClientEntry entry ) {&lt;br /&gt;        String name = entry.getName();&lt;br /&gt;        String id = entry.getId();&lt;br /&gt;        Resource resource = entry.getResource();&lt;br /&gt;        String type = resource.getType();&lt;br /&gt;        return name + " ( id=" + id + ", type=" + type + ")";&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here the most important method, that gets childs from entries:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Creates a {@link List} of {@link ClientEntry}s for a particular entry.&lt;br /&gt;     * &lt;br /&gt;     * @param parentId the id of the parent entry.&lt;br /&gt;     * @return the lsit of child entries.&lt;br /&gt;     * @throws Exception&lt;br /&gt;     */&lt;br /&gt;    public List getChildEntries( String parentId ) throws Exception {&lt;br /&gt;        String[] args = new String[]{ARG_ENTRYID, parentId, ARG_OUTPUT, "xml.xml", ARG_SESSIONID,&lt;br /&gt;                repositoryClient.getSessionId()};&lt;br /&gt;        String url = HtmlUtil.url(repositoryClient.URL_ENTRY_SHOW.getFullUrl(), args);&lt;br /&gt;        String xml = IOUtil.readContents(url, getClass());&lt;br /&gt;        Element root = XmlUtil.getRoot(xml);&lt;br /&gt;&lt;br /&gt;        List childEntries = new ArrayList();&lt;br /&gt;        List children = XmlUtil.getElements(root, "entry");&lt;br /&gt;        for( int i = 0; i &lt; children.size(); i++ ) {&lt;br /&gt;            Object object = children.get(i);&lt;br /&gt;            String id = XmlUtil.getAttribute((Node) object, "id");&lt;br /&gt;            ClientEntry entry = repositoryClient.getEntry(id);&lt;br /&gt;            childEntries.add(entry);&lt;br /&gt;        }&lt;br /&gt;        return childEntries;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The result launch on the above repository is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;morpheo ( id=02c47d07-6f7d-473b-b104-b922348f7d51, type=unknown)&lt;br /&gt;   documents ( id=660cb2ce-99f5-4d4b-9682-2f408c2b105e, type=unknown)&lt;br /&gt;      client code ( id=9977cbc1-2589-49c8-b7e0-9b944970d169, type=storedfile)&lt;br /&gt;      call_4_papers.odt ( id=33a026f4-87f3-4c78-8c1d-d14da597aa06, type=storedfile)&lt;br /&gt;      rasterlite-how-to ( id=0a138888-b5ee-42bf-be3e-f78c8c3a5232, type=storedfile)&lt;br /&gt;      hydrologis logo ( id=209c182d-e22c-48b2-933a-8d03ab4b72d9, type=storedfile)&lt;br /&gt;   netcdf ( id=91b9a338-d68e-4411-bdd3-b3e5a3f111c6, type=unknown)&lt;br /&gt;      cami_0000.nc ( id=3a74f349-a4bf-4f9d-916d-83f4511e0877, type=localfile)&lt;br /&gt;      water.nc ( id=400a17cc-f33c-40f4-a896-b2bffbed2f84, type=storedfile)&lt;br /&gt;      water_surf.nc ( id=6b69040b-7a96-46dc-95b2-0d6ae044f948, type=storedfile)&lt;br /&gt;   water_surf.nc ( id=eded7693-8b6e-4941-87f5-2fc9bb2a6bb7, type=storedfile)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6848210919320028023?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6848210919320028023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6848210919320028023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6848210919320028023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6848210919320028023'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/09/ramadda-take-two-browsing-tree.html' title='RAMADDA, take two: browsing the tree'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/SrtZgGHhK5I/AAAAAAAABXk/Vfysc1mT8V0/s72-c/ramadda_tree.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6615598972476735434</id><published>2009-09-23T23:18:00.007+02:00</published><updated>2009-09-24T00:08:09.573+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netcdf'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>RAMADDA</title><content type='html'>You might ask yourself what ramadda is, and I can tell you that the &lt;a href="http://www.unidata.ucar.edu/software/ramadda/index.html"&gt;&lt;b&gt;R&lt;/b&gt;epository for &lt;b&gt;A&lt;/b&gt;rchiving, &lt;b&gt;M&lt;/b&gt;anaging and &lt;b&gt;A&lt;/b&gt;ccessing &lt;b&gt;D&lt;/b&gt;iverse &lt;b&gt;DA&lt;/b&gt;ta&lt;/a&gt; is awsome!&lt;br /&gt;&lt;br /&gt;It is really a while that I search for a way to store diverse data, most of them grids, in a repository where the metadat would be preserved and in case even editable. A place where one could extract subsets of data from the datasets. A place where one could access the data also directly from the GIS... yes, I know, everything is thinking about OGC and some WCS and whatever else.&lt;br /&gt;But the summer of code opened me a pandora box full of presents and by choosing the necdf format many possibilities built on open sourced software are available.&lt;br /&gt;&lt;br /&gt;Ramadda can be tested on the &lt;a href="http://motherlode.ucar.edu/repository"&gt;unidata's demo server&lt;/a&gt;, so I won't talk about the many features that one can try out there.&lt;br /&gt;&lt;br /&gt;I want to talk about background jobs that can be done from the client code of Ramadda, which Mr. Jeff&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;McWhirter was so kind to introduce me to and help me with.&lt;br /&gt;&lt;br /&gt;First, to get started, you need the repository client library, which you can &lt;a href="http://www.unidata.ucar.edu/downloads/ramadda/ftp/repositoryclient.zip"&gt;download here&lt;/a&gt;. Once the contained libraries are in the classpath, you can start.&lt;br /&gt;&lt;br /&gt;Let us assume we start from an existing ramadda repository, that looks like the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SrqVzJni87I/AAAAAAAABXE/c_7XOmh2rk4/s1600-h/01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SrqVzJni87I/AAAAAAAABXE/c_7XOmh2rk4/s400/01.png" alt="" id="BLOGGER_PHOTO_ID_5384781010462503858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let's assume we need to upload a netcdf file that has been produced in JGrass by some model.&lt;br /&gt;The following shows the code needed to do so.&lt;br /&gt;&lt;br /&gt;First a client connection has to be instantiated:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;RepositoryClient repositoryClient = new RepositoryClient(host, Integer.parseInt(port), base, user, pass);&lt;br /&gt;String[] msg = {""};&lt;br /&gt;if (!repositoryClient.isValidSession(true, msg)) {&lt;br /&gt;  // throw some exception&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;where the isValidSession method in this case also performs a login in the ramadda environment.&lt;br /&gt;&lt;br /&gt;Once the connection is done, the upload of any file can be done. The following method does that for you:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Uploads a file to ramadda.&lt;br /&gt;     * &lt;br /&gt;     * @param entryName name of the entry that will appear in the ramadda server.&lt;br /&gt;     * @param entryDescription a description of the entry that will appear in the ramadda server.&lt;br /&gt;     * @param type the file type that is uploaded.&lt;br /&gt;     * @param parent the parent path inside the repository, into which to upload the file &lt;br /&gt;     *              ex. &lt;i&gt;morpheo/documents&lt;/i&gt;, where &lt;i&gt;morpheo&lt;/i&gt; is the base group and &lt;i&gt;documents&lt;/i&gt; &lt;br /&gt;     *              the subgroup.&lt;br /&gt;     * @param filePath the path to the file to upload.&lt;br /&gt;     * @throws Exception&lt;br /&gt;     */&lt;br /&gt;    public String uploadFile( String entryName, String entryDescription, String type,&lt;br /&gt;            String parent, String filePath ) throws Exception {&lt;br /&gt;&lt;br /&gt;        Document doc = XmlUtil.makeDocument();&lt;br /&gt;        Element root = XmlUtil.create(doc, TAG_ENTRIES, null, new String[]{});&lt;br /&gt;        Element entryNode = XmlUtil.create(doc, TAG_ENTRY, root, new String[]{});&lt;br /&gt;&lt;br /&gt;        /*&lt;br /&gt;         * name&lt;br /&gt;         */&lt;br /&gt;        entryNode.setAttribute(ATTR_NAME, entryName);&lt;br /&gt;        /*&lt;br /&gt;         * description&lt;br /&gt;         */&lt;br /&gt;        Element descNode = XmlUtil.create(doc, TAG_DESCRIPTION, entryNode);&lt;br /&gt;        descNode.appendChild(XmlUtil.makeCDataNode(doc, entryDescription, false));&lt;br /&gt;        /*&lt;br /&gt;         * type&lt;br /&gt;         */&lt;br /&gt;        if (type != null) {&lt;br /&gt;            entryNode.setAttribute(ATTR_TYPE, type);&lt;br /&gt;        }&lt;br /&gt;        /*&lt;br /&gt;         * parent&lt;br /&gt;         */&lt;br /&gt;        entryNode.setAttribute(ATTR_PARENT, parent);&lt;br /&gt;        /*&lt;br /&gt;         * file&lt;br /&gt;         */&lt;br /&gt;        File file = new File(filePath);&lt;br /&gt;        entryNode.setAttribute(ATTR_FILE, IOUtil.getFileTail(filePath));&lt;br /&gt;        /*&lt;br /&gt;         * addmetadata&lt;br /&gt;         */&lt;br /&gt;        entryNode.setAttribute(ATTR_ADDMETADATA, "true");&lt;br /&gt;&lt;br /&gt;        ByteArrayOutputStream bos = null;&lt;br /&gt;        ZipOutputStream zos = null;&lt;br /&gt;        try {&lt;br /&gt;            bos = new ByteArrayOutputStream();&lt;br /&gt;            zos = new ZipOutputStream(bos);&lt;br /&gt;            /*&lt;br /&gt;             * write the xml definition into the zip file&lt;br /&gt;             */&lt;br /&gt;            String xml = XmlUtil.toString(root);&lt;br /&gt;            zos.putNextEntry(new ZipEntry("entries.xml"));&lt;br /&gt;            byte[] bytes = xml.getBytes();&lt;br /&gt;            zos.write(bytes, 0, bytes.length);&lt;br /&gt;            zos.closeEntry();&lt;br /&gt;            /*&lt;br /&gt;             * add also the file&lt;br /&gt;             */&lt;br /&gt;            String file2string = file.toString();&lt;br /&gt;            zos.putNextEntry(new ZipEntry(IOUtil.getFileTail(file2string)));&lt;br /&gt;            bytes = IOUtil.readBytes(new FileInputStream(file));&lt;br /&gt;            zos.write(bytes, 0, bytes.length);&lt;br /&gt;            zos.closeEntry();&lt;br /&gt;        } finally {&lt;br /&gt;            zos.close();&lt;br /&gt;            bos.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        List postEntries = new ArrayList();&lt;br /&gt;        postEntries.add(HttpFormEntry.hidden(ARG_SESSIONID, repositoryClient.getSessionId()));&lt;br /&gt;        postEntries.add(HttpFormEntry.hidden(ARG_RESPONSE, RESPONSE_XML));&lt;br /&gt;        postEntries.add(new HttpFormEntry(ARG_FILE, "entries.zip", bos.toByteArray()));&lt;br /&gt;&lt;br /&gt;        RequestUrl URL_ENTRY_XMLCREATE = new RequestUrl(repositoryClient, "/entry/xmlcreate");&lt;br /&gt;        String[] result = repositoryClient.doPost(URL_ENTRY_XMLCREATE, postEntries);&lt;br /&gt;        if (result[0] != null) {&lt;br /&gt;            outputStream.println("Error:" + result[0]);&lt;br /&gt;            return null;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        Element response = XmlUtil.getRoot(result[1]);&lt;br /&gt;        String body = XmlUtil.getChildText(response).trim();&lt;br /&gt;        if (repositoryClient.responseOk(response)) {&lt;br /&gt;            outputStream.println("OK:" + body);&lt;br /&gt;        } else {&lt;br /&gt;            outputStream.println("Error:" + body);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        Element child = XmlUtil.findChild(response, "entry");&lt;br /&gt;        String entryId = child.getAttribute("id");&lt;br /&gt;        String urlString = "http://" + host + ":" + port + base + "/entry/get/" + entryName&lt;br /&gt;                + "?entryid=" + entryId;&lt;br /&gt;        return urlString;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This method returns a url string, that can be used in the browser to fetch the uploaded dataset.&lt;br /&gt;&lt;br /&gt;So if I was to upload a netcdf called water_surf.nc without supplying a particular path, it would have resulted in appearing in the base group, called morpheo in this case:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/Srqb7EOYdjI/AAAAAAAABXc/HS9yr3X-nZY/s1600-h/04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 383px; height: 294px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/Srqb7EOYdjI/AAAAAAAABXc/HS9yr3X-nZY/s400/04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5384787743523501618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What I really love about ramadda, is that if the dataset is in netcdf format for example, the metadata are accessible and editable also from the web interface:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SrqZik4r0gI/AAAAAAAABXM/kpsziDKHk2s/s1600-h/02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 354px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SrqZik4r0gI/AAAAAAAABXM/kpsziDKHk2s/s400/02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5384785123770880514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are several ways the data can be accesses, and note in the below picture the opendap link, which is the one the JGrass uses to visualize the dataset or use it in the models:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SrqZ2gVPv6I/AAAAAAAABXU/CjdFuBA3uq4/s1600-h/03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 214px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SrqZ2gVPv6I/AAAAAAAABXU/CjdFuBA3uq4/s400/03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5384785466145882018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, but I was writing about programmatically access the data. So how to fetch data from the server? They can be downloaded from ramadda by means of their id. In fact the last part of the above returned url string represents the unique id of the dataset (...?entryid=&lt;span style="font-weight:bold;"&gt;THEENTRYID&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Downloading a file from ramadda is incredibly easy, since the RepositoryClient class sopplies a method called &lt;span style="font-weight:bold;"&gt;writeFile&lt;/span&gt; that takes the entry id and the output file to which to download as parameters:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;repositoryClient.writeFile(entryId, outputFile)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And that is all, thanks to Jeff McWhirter for all the great help he gave me.&lt;br /&gt;&lt;br /&gt;Soon I will be glad to describe some deeper integration between JGrass modeling environment and Ramadda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6615598972476735434?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6615598972476735434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6615598972476735434' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6615598972476735434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6615598972476735434'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/09/ramadda.html' title='RAMADDA'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/SrqVzJni87I/AAAAAAAABXE/c_7XOmh2rk4/s72-c/01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4732804271226979369</id><published>2009-08-12T17:33:00.002+02:00</published><updated>2009-08-12T17:34:33.136+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>The new navigation view...</title><content type='html'>Created for udig, for now used to browse netcdf files along a temporal axis... and since a screencast is more than many words... enjoy (as I did :) )!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5kpiJDWtZzc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/5kpiJDWtZzc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4732804271226979369?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4732804271226979369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4732804271226979369' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4732804271226979369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4732804271226979369'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/08/new-navigation-view.html' title='The new navigation view...'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-4225161330278669935</id><published>2009-08-07T12:38:00.002+02:00</published><updated>2009-08-07T12:41:21.038+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Time and Z navigation internals are here</title><content type='html'>Another bit of netcdf project is done. This time it was creating the internals of navigation... more about it &lt;a href="http://jgrass.wiki.software.bz.it/jgrass/weekly_reports#head-41fd65f40ff1ea33467396cf71100a050b51cbc9"&gt;on the project page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Just a snappy to make this blog not look so annoying :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SnwEpehn1TI/AAAAAAAABWk/ImGmGhkiSxE/s1600-h/navigation_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 338px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SnwEpehn1TI/AAAAAAAABWk/ImGmGhkiSxE/s400/navigation_04.png" alt="" id="BLOGGER_PHOTO_ID_5367169966534022450" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-4225161330278669935?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/4225161330278669935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=4225161330278669935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4225161330278669935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/4225161330278669935'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/08/time-and-z-navigation-internals-are.html' title='Time and Z navigation internals are here'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/SnwEpehn1TI/AAAAAAAABWk/ImGmGhkiSxE/s72-c/navigation_04.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2735535739435903566</id><published>2009-07-29T16:57:00.002+02:00</published><updated>2009-07-29T17:01:25.414+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Netcdf export engine and GUI finally done</title><content type='html'>I finally managed to finish the export wizard for netcdf files. The problem for the first time for me was that I had to limit very carefully what could be done during export... if you are interested in a tour through the export process, I&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://jgrass.wiki.software.bz.it/jgrass/weekly_reports#head-7949cfe452d80ee75438e4f7c74925de371e6232"&gt;wrote down some docu on the JGrass soc page.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2735535739435903566?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2735535739435903566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2735535739435903566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2735535739435903566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2735535739435903566'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/netcdf-export-engine-and-gui-finally.html' title='Netcdf export engine and GUI finally done'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-539601158601822466</id><published>2009-07-23T18:33:00.005+02:00</published><updated>2009-07-23T18:50:41.584+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><title type='text'>Enhancements in the print editor of udig</title><content type='html'>During the udig code sprint I worked a lot on the printing module, that needed some love. I made screenshots to give a description. But now I am really done from preparing the release for tomorrow, that I don't feel like... hope you will enjoy those quite selfexplanatory screens:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SmiSRJUFM1I/AAAAAAAABVk/PmmUz08Ig48/s1600-h/printing_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SmiSRJUFM1I/AAAAAAAABVk/PmmUz08Ig48/s400/printing_01.png" alt="" id="BLOGGER_PHOTO_ID_5361696179640152914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SmiSRSCMYMI/AAAAAAAABVs/S6uOzaYb0WA/s1600-h/printing_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SmiSRSCMYMI/AAAAAAAABVs/S6uOzaYb0WA/s400/printing_02.png" alt="" id="BLOGGER_PHOTO_ID_5361696181981044930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SmiSRvNIcAI/AAAAAAAABV0/1VYGiQ-ntxE/s1600-h/printing_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SmiSRvNIcAI/AAAAAAAABV0/1VYGiQ-ntxE/s400/printing_03.png" alt="" id="BLOGGER_PHOTO_ID_5361696189811552258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SmiSRyncDJI/AAAAAAAABV8/cfkGh4PDmwA/s1600-h/printing_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SmiSRyncDJI/AAAAAAAABV8/cfkGh4PDmwA/s400/printing_04.png" alt="" id="BLOGGER_PHOTO_ID_5361696190727195794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SmiSSNu3AtI/AAAAAAAABWE/acMq1SLITIg/s1600-h/printing_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SmiSSNu3AtI/AAAAAAAABWE/acMq1SLITIg/s400/printing_05.png" alt="" id="BLOGGER_PHOTO_ID_5361696198006080210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SmiSlcRVF0I/AAAAAAAABWM/iu8zqUHRKW0/s1600-h/printing_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 189px; height: 275px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SmiSlcRVF0I/AAAAAAAABWM/iu8zqUHRKW0/s400/printing_06.png" alt="" id="BLOGGER_PHOTO_ID_5361696528326268738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;And the resulting A1 landscape pdf...&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SmiSlnlKGZI/AAAAAAAABWU/qL2GmrWfcfw/s1600-h/printing_07.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SmiSlnlKGZI/AAAAAAAABWU/qL2GmrWfcfw/s400/printing_07.png" alt="" id="BLOGGER_PHOTO_ID_5361696531362224530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SmiSl0dTLqI/AAAAAAAABWc/wh-1OU-K5y4/s1600-h/printing_08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SmiSl0dTLqI/AAAAAAAABWc/wh-1OU-K5y4/s400/printing_08.png" alt="" id="BLOGGER_PHOTO_ID_5361696534818926242" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-539601158601822466?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/539601158601822466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=539601158601822466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/539601158601822466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/539601158601822466'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/enhancements-in-print-editor-of-udig.html' title='Enhancements in the print editor of udig'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/SmiSRJUFM1I/AAAAAAAABVk/PmmUz08Ig48/s72-c/printing_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2416934235503973383</id><published>2009-07-16T09:12:00.002+02:00</published><updated>2009-07-16T09:13:09.559+02:00</updated><title type='text'>Meet your team!</title><content type='html'>Wanna see who is working on making udig 1.2 great right now?&lt;br /&gt;&lt;br /&gt;Meet your team!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://udig-news.blogspot.com/2009/07/udig-code-grind-team.html"&gt;http://udig-news.blogspot.com/2009/07/udig-code-grind-team.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2416934235503973383?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2416934235503973383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2416934235503973383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2416934235503973383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2416934235503973383'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/meet-your-team.html' title='Meet your team!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1726020196056548696</id><published>2009-07-14T08:34:00.002+02:00</published><updated>2009-07-14T08:37:05.858+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><title type='text'>The udig code grind, day 2</title><content type='html'>&lt;div style="text-align: center;"&gt;The udig code sprint is at its second day.&lt;br /&gt;&lt;br /&gt;We are posting info on the udig news blog: &lt;a href="http://udig-news.blogspot.com/"&gt;http://udig-news.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fun, fun, fun!!!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/Slwi_UigOgI/AAAAAAAABUc/2pgQXsURBmg/s400/pic2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/Slwi_UigOgI/AAAAAAAABUc/2pgQXsURBmg/s400/pic2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1726020196056548696?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1726020196056548696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1726020196056548696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1726020196056548696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1726020196056548696'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/udig-code-grind-day-2.html' title='The udig code grind, day 2'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/Slwi_UigOgI/AAAAAAAABUc/2pgQXsURBmg/s72-c/pic2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6387938803685545684</id><published>2009-07-09T15:37:00.004+02:00</published><updated>2009-07-09T15:40:15.942+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Exporting sets of GRASS rasters to netcdf</title><content type='html'>If you wonder how to export a GRASS raster map like this&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/SlXys3FSZjI/AAAAAAAABUU/Jq49YKkS_3U/s1600-h/netcdf_write_orig.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 362px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/SlXys3FSZjI/AAAAAAAABUU/Jq49YKkS_3U/s400/netcdf_write_orig.png" alt="" id="BLOGGER_PHOTO_ID_5356454184341366322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;to a netcdf dataset, then go to &lt;a href="http://jgrass.wiki.software.bz.it/jgrass/weekly_reports#head-622070c5839889eda7812d8c13ab9342d9aa2c7e"&gt;this page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And this is how it looks like when you visualize it again in JGrass.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SlXypV0XwoI/AAAAAAAABUM/7oeS4Ykmrj0/s1600-h/netcdf_write.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 208px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SlXypV0XwoI/AAAAAAAABUM/7oeS4Ykmrj0/s400/netcdf_write.png" alt="" id="BLOGGER_PHOTO_ID_5356454123872436866" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6387938803685545684?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6387938803685545684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6387938803685545684' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6387938803685545684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6387938803685545684'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/exporting-sets-of-grass-rasters-to.html' title='Exporting sets of GRASS rasters to netcdf'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/SlXys3FSZjI/AAAAAAAABUU/Jq49YKkS_3U/s72-c/netcdf_write_orig.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-5079054972865716379</id><published>2009-07-03T08:39:00.003+02:00</published><updated>2009-07-03T08:48:18.240+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gps'/><title type='text'>bluetooth gps on linux - short howto</title><content type='html'>Once you paired the gps with your pc, scan for the device to gather the hardware address:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&gt; hcitool scan&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;Scanning ...&lt;br /&gt;   00:0B:0D:6F:F9:C5       SJA GPS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once the hardware address is found, you can use it to find the channel through which they chat:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&gt; sdptool browse 00:0B:0D:6F:F9:C5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;Browsing 00:0B:0D:6F:F9:C5 ...&lt;br /&gt;Service Name: SPP slave&lt;br /&gt;Service Description: Bluetooth SPP V1.01&lt;br /&gt;Service RecHandle: 0x10000&lt;br /&gt;Service Class ID List:&lt;br /&gt;"Serial Port" (0x1101)&lt;br /&gt;Protocol Descriptor List:&lt;br /&gt;"L2CAP" (0x0100)&lt;br /&gt;"RFCOMM" (0x0003)&lt;br /&gt;Channel: 1&lt;br /&gt;Language Base Attr List:&lt;br /&gt;code_ISO639: 0x656e&lt;br /&gt;encoding:    0x6a&lt;br /&gt;base_offset: 0x100&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this case channel seems to be 1. Create a virtual serial port through which to bind the gps through its hardware address and channel to the device &lt;span style="font-style: italic;"&gt;rfcomm0&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&gt; rfcomm bind /dev/rfcomm0 00:0B:0D:6F:F9:C5 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See if it works:&lt;b id="t.5c"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&gt; cat /dev/rfcomm0&lt;/span&gt;&lt;b style="font-style: italic;" id="t.5c"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;If everything went right, now you should see a stream of NMEA sentences coming along your console.&lt;br /&gt;&lt;br /&gt;To be able to see it for example by java programs, you need to link it to a virtual port ttySxxxxx:&lt;br /&gt;&lt;div id="amsh" style="margin-left: 40px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&gt; sudo ln -s /dev/rfcomm0 /dev/ttyS0007&lt;/span&gt;&lt;b id="bynw"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-5079054972865716379?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/5079054972865716379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=5079054972865716379' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5079054972865716379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/5079054972865716379'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/bluetooth-gps-on-linux-short-howto.html' title='bluetooth gps on linux - short howto'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-7766031494099864686</id><published>2009-07-02T08:10:00.003+02:00</published><updated>2011-05-07T12:09:08.152+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='devel'/><title type='text'>jai &amp; tail: cannot open `+215' for reading: No such file or directory</title><content type='html'>&lt;span style="font-weight: bold;"&gt;tail: cannot open `+215' for reading: No such file or director&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I already had this once and I was able to forget. When installing jai_imageio in your jdk you might get this.&lt;br /&gt;For example it happend me with jai_imageio-1_1-lib-linux-amd64-jdk.bin but I remember last time it was on a 32 bit.&lt;br /&gt;&lt;br /&gt;The fix is really easy with sed (do not use a text editor to change, else the binary content of the installer will get corrupted). You just have to change the tail command syntax to work:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sed s/+215/-n+215/ jai_imageio-1_1-lib-linux-amd64-jdk.bin &gt; jai_imageio-1_1-lib-linux-amd64-jdk-fixed.bin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then run &lt;span style="font-weight: bold;"&gt;sh jai_imageio-1_1-lib-linux-amd64-jdk-fixed.bin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------&lt;br /&gt;Update: &lt;br /&gt;as a gentle anonymous hacker stated:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;export _POSIX2_VERSION=199209&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;also works and is nicer than the idea to change the installation file. Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-7766031494099864686?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/7766031494099864686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=7766031494099864686' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7766031494099864686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/7766031494099864686'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/07/jai-tail-cannot-open-215-for-reading-no.html' title='jai &amp; tail: cannot open `+215&apos; for reading: No such file or directory'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1659746297161412096</id><published>2009-06-30T10:23:00.004+02:00</published><updated>2009-06-30T11:00:29.875+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rants and opinions'/><title type='text'>JGrass and its sick community...</title><content type='html'>Today I closed 2 of the 3 active mailinglists of JGrass.&lt;br /&gt;What a horrible feeling... it is now about 10 years I develop for FOSS software and never had to act like this.&lt;br /&gt;&lt;br /&gt;Killing the mailinglists kills an open source project, needless to say.&lt;br /&gt;&lt;br /&gt;But not killing them would kill us... so let's see if users will make the effort to keep at least the jgrass-users list alive. I really hope that converging efforts into on single list might do better.&lt;br /&gt;The developers have been redirected to the udig developers list, since many of the questions were anyway related to udig core.&lt;br /&gt;&lt;br /&gt;JGrass has always been a small kid with a lot of problems and an incredible difficulty to gather friends. This is due to it's nature and some dynamics I don't understand even now.&lt;br /&gt;&lt;br /&gt;JGrass is a scientific based tool, that also wants to be a full powered desktop GIS. So what?&lt;br /&gt;&lt;br /&gt;Let me think out loud and write down some comments:&lt;br /&gt;&lt;br /&gt;With JGrass you can do complete hydrological risk studies, from the begin to the end of the study JGrass has all the tools. These tools are mainly useful to Engineers and Geologists. The problem is that most of those do a hydrological study once a year. Which means that at that time they come into the list, ask newbie questions and get help to do the job. Then for the rest of the year they disappear, since they have something else to do. When a "JGrass-job" comes again, here they come again, with almost the same questions, since JGrass evolved and no one was paying attention. Quite frustrating being always in need of founding to develop JGrass and having to help people doing their jobs for free.&lt;br /&gt;&lt;br /&gt;Differently from other hydro-morphological toolkits, JGrass contains some heavy models and it is not possible to think it as a library. Instead we need a friendly yet powerful environment to get things rolling at the last state of art of technology.&lt;br /&gt;Luckily we found that framework in uDig and we are glad of the migration we did every day since then. In fact, JGrass right now is at one of its best moments and quickly evolving (which makes me even more sad right now).&lt;br /&gt;&lt;br /&gt;HydroloGIS is not able to be the only developer, the only release maintainer, the only docs writer, the only mailinglist answerer, and so on... Therefore the decision to cut away something. And what would that something be? Sad to say, but the only thing that we as HydroloGIS do not need and that we initially set up only for the community... a community that even now doesn't get what they are losing.&lt;br /&gt;&lt;br /&gt;I am not telling it is not my fault. It probably is in some way. I am instead telling that I want to make things better. If I have time I want to spend it on developing, making better releases and write some documentation... not on newbie questions that other users would be able to answer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1659746297161412096?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1659746297161412096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1659746297161412096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1659746297161412096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1659746297161412096'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/06/jgrass-and-its-sick-community.html' title='JGrass and its sick community...'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-8583523734784587249</id><published>2009-06-18T18:55:00.002+02:00</published><updated>2009-06-18T18:59:34.894+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Netcdf will get into JGrass with arrows</title><content type='html'>My summer of code project is proceeding.&lt;br /&gt;&lt;br /&gt;Not to much to say here, just a link to some news and a mandatory screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SjpyOuz98rI/AAAAAAAABTo/U2uEzU0OTNg/s1600-h/out_4m.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SjpyOuz98rI/AAAAAAAABTo/U2uEzU0OTNg/s400/out_4m.gif" alt="" id="BLOGGER_PHOTO_ID_5348713104865620658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To see the animation, follow...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://jgrass.wiki.software.bz.it/jgrass/the_choice_to_go_with_ncWMS"&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;the link&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-8583523734784587249?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/8583523734784587249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=8583523734784587249' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8583523734784587249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8583523734784587249'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/06/netcdf-will-get-into-jgrass-with-arrows.html' title='Netcdf will get into JGrass with arrows'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/SjpyOuz98rI/AAAAAAAABTo/U2uEzU0OTNg/s72-c/out_4m.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2188975094012103716</id><published>2009-06-16T16:52:00.011+02:00</published><updated>2009-06-16T17:07:30.068+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>GeoPaparazzi as the BeeGIS companion - part I</title><content type='html'>Alright, today we tested GeoPaparazzi for the first time in field.&lt;br /&gt;&lt;br /&gt;The tool is funny and easy to use. My battery lasted the morning and then was finished. But I guess that is ok, since it had to log the gps and took many pictures and many notes.&lt;br /&gt;&lt;br /&gt;Alright, before I have no time to do it, I want to show the use as companion of BeeGIS.&lt;br /&gt;&lt;br /&gt;So I connect my HTC Dream via USB to my Ubuntu box. The phone asks me if I want to mount it as disk. I say yes and I get the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/Sjeymiytz4I/AAAAAAAABSw/sUlXYA1UQjg/s1600-h/geopap_2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 269px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/Sjeymiytz4I/AAAAAAAABSw/sUlXYA1UQjg/s400/geopap_2.png" alt="" id="BLOGGER_PHOTO_ID_5347939457770049410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note that GeoPaparazzi creates a folder &lt;span style="font-weight: bold;"&gt;geopaparazzi&lt;/span&gt; at the root of your sdcard.&lt;br /&gt;&lt;br /&gt;Ok, then I start up BeeGIS and enter the File-&gt;Import dialog and find the &lt;span style="font-weight: bold;"&gt;Import GeoPaparazzi Data Folder &lt;/span&gt;item:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SjezA-LT8JI/AAAAAAAABS4/i-r7d1u8_48/s1600-h/geopap_1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SjezA-LT8JI/AAAAAAAABS4/i-r7d1u8_48/s400/geopap_1.png" alt="" id="BLOGGER_PHOTO_ID_5347939911797567634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The next asks me for the geopaprazzi root folder and the processed items folder:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SjezazDu_QI/AAAAAAAABTA/vJga9BC2Tbg/s1600-h/geopap_3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 359px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SjezazDu_QI/AAAAAAAABTA/vJga9BC2Tbg/s400/geopap_3.png" alt="" id="BLOGGER_PHOTO_ID_5347940355489594626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once pushed finish, everything found inside the data folder will be imported as follows. I will explain how later. Images import is still not there, since I have some parts to fix first. Therefore the import will bring notes into a shapfile and the gpslog into both a lines shapefile and a points shapefile:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/Sjez-2N7SKI/AAAAAAAABTI/Ixqi35moY_g/s1600-h/geopap_4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/Sjez-2N7SKI/AAAAAAAABTI/Ixqi35moY_g/s400/geopap_4.png" alt="" id="BLOGGER_PHOTO_ID_5347940974812940450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;NOTES&lt;/span&gt; shapefile is created with a TIMESTAMP and DESCRIPTION field:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/Sje0P9bYvsI/AAAAAAAABTQ/oMmgLimZxdU/s1600-h/geopap_5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/Sje0P9bYvsI/AAAAAAAABTQ/oMmgLimZxdU/s400/geopap_5.png" alt="" id="BLOGGER_PHOTO_ID_5347941268806221506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;GPSLOG LINES&lt;/span&gt; shapefile is created with a STARTDATE and ENDDATE field:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/Sje0mEyggSI/AAAAAAAABTY/STUJ-Trh_yM/s1600-h/geopap_7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/Sje0mEyggSI/AAAAAAAABTY/STUJ-Trh_yM/s400/geopap_7.png" alt="" id="BLOGGER_PHOTO_ID_5347941648739369250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And finally the &lt;span style="font-weight: bold;"&gt;GPSLOG POINTS&lt;/span&gt; shapefile is created with an ALTIMETRY and DATE field:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/Sje0694NTUI/AAAAAAAABTg/8L7fj7Qu8Ug/s1600-h/geopap_6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/Sje0694NTUI/AAAAAAAABTg/8L7fj7Qu8Ug/s400/geopap_6.png" alt="" id="BLOGGER_PHOTO_ID_5347942007661481282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's it for now, coming back soon with the orientated pictures part.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2188975094012103716?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2188975094012103716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2188975094012103716' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2188975094012103716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2188975094012103716'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/06/geopaparazzi-as-beegis-companion-part-i.html' title='GeoPaparazzi as the BeeGIS companion - part I'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VHcYLjUYssM/Sjeymiytz4I/AAAAAAAABSw/sUlXYA1UQjg/s72-c/geopap_2.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-3156843168052288426</id><published>2009-06-14T18:13:00.004+02:00</published><updated>2009-06-16T17:07:51.888+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geopaparazzi'/><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>GeoPaparazzi is born!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/SjUhuLF4ssI/AAAAAAAABSo/OJ825OZ2YYY/s1600-h/icon_big.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 165px; height: 167px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/SjUhuLF4ssI/AAAAAAAABSo/OJ825OZ2YYY/s400/icon_big.png" alt="" id="BLOGGER_PHOTO_ID_5347217209707508418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="nonexistent"&gt;GeoParazzi&lt;/span&gt; enables your android phone to do digital field mapping.&lt;br /&gt;&lt;br /&gt;You can find some screenshot at the project page: &lt;a href="http://www.geopaparazzi.eu/"&gt;http://www.geopaparazzi.eu&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Now the BeeGIS part has to be done in order to import the collected data... but that one should be really easy.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-3156843168052288426?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/3156843168052288426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=3156843168052288426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3156843168052288426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/3156843168052288426'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/06/geopaparazzi-is-born.html' title='GeoPaparazzi is born!'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/SjUhuLF4ssI/AAAAAAAABSo/OJ825OZ2YYY/s72-c/icon_big.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1123082867483854645</id><published>2009-06-10T17:35:00.003+02:00</published><updated>2009-06-10T17:38:53.234+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><category scheme='http://www.blogger.com/atom/ns#' term='udig'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>uDig Code Grind 2009</title><content type='html'>Since I am not sure if people reading here are aware of the udig blog, I will link from here to the first small even announcement:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://udig-news.blogspot.com/2009/06/udig-code-grind-2009-coming-up.html"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:180%;" &gt;uDig Code Grind 2009 coming up&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1123082867483854645?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1123082867483854645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1123082867483854645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1123082867483854645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1123082867483854645'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/06/udig-code-grind-2009.html' title='uDig Code Grind 2009'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-8134640054597942509</id><published>2009-05-28T13:07:00.012+02:00</published><updated>2009-05-28T16:39:25.927+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='geonotes'/><title type='text'>Anatomy of a field mapping</title><content type='html'>As promised in the last post, I will spend a moment to show how to import pictures and sync them with the gps log that was taken during the field mapping.&lt;br /&gt;&lt;br /&gt;Since the maps we used are not for public view, the backgrounds of the maps in this post will be quite empty. But that isn't so important for what we want to see.&lt;br /&gt;&lt;br /&gt;Imagine you made your field mapping, spent the day out in the sun, took gps points, created geonotes and your colleague continuosly took pictures to be able to better understand what is going on once you are back home and have to review the work and do analyses.&lt;br /&gt;&lt;br /&gt;So now you are at home and have a bunch of geonotes that might look like the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh5yBTLhkrI/AAAAAAAABRg/OXssSWgNjjc/s1600-h/rilievo_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh5yBTLhkrI/AAAAAAAABRg/OXssSWgNjjc/s400/rilievo_01.png" alt="" id="BLOGGER_PHOTO_ID_5340831574762033842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;your embedded database view tells you through a quick query that the gps log saved 3695 points:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/Sh5ynXdfCII/AAAAAAAABRo/C5S0cimSuOQ/s1600-h/rilievo_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/Sh5ynXdfCII/AAAAAAAABRo/C5S0cimSuOQ/s400/rilievo_02.png" alt="" id="BLOGGER_PHOTO_ID_5340832228746135682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;your colleague tells you that he took 64 pictures:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/Sh5zEqH1XuI/AAAAAAAABRw/mEedoSHh1yM/s1600-h/rilievo_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 305px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/Sh5zEqH1XuI/AAAAAAAABRw/mEedoSHh1yM/s400/rilievo_03.png" alt="" id="BLOGGER_PHOTO_ID_5340832731971804898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;again your colleague tells you that when you started the field mapping in the morning the gps utctime and the digital camera time had a difference of &lt;span style="font-weight: bold;"&gt;2 hours and 1 minute&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This is all you need. Go under File -&gt; import -&gt; Other -&gt; Import Photos&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/Sh5zowwwP6I/AAAAAAAABR4/hUSc2og8rsg/s1600-h/rilievo_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 359px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/Sh5zowwwP6I/AAAAAAAABR4/hUSc2og8rsg/s400/rilievo_04.png" alt="" id="BLOGGER_PHOTO_ID_5340833352229339042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next tab asks you two things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the pictures folder&lt;/li&gt;&lt;li&gt;the time shift between gps and camera (gps time - camera time in seconds) in my case 2 hours and 1 minute = -7260 seconds&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh50SBgmpZI/AAAAAAAABSA/_ams7lHdlc0/s1600-h/rilievo_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 359px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh50SBgmpZI/AAAAAAAABSA/_ams7lHdlc0/s400/rilievo_05.png" alt="" id="BLOGGER_PHOTO_ID_5340834061099640210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Push Finish and it will import the pictures as geonotes in the position in which gps log and picture time match:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh51EAB-ApI/AAAAAAAABSI/Bacf5zFZFm0/s1600-h/rilievo_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh51EAB-ApI/AAAAAAAABSI/Bacf5zFZFm0/s400/rilievo_06.png" alt="" id="BLOGGER_PHOTO_ID_5340834919696171666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And pictures that were found to be out of range of time are not added (in this case 3 pics that were on the camera from another day):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh51ccwBFVI/AAAAAAAABSQ/RVkPmd9KB8Y/s1600-h/rilievo_07.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 144px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh51ccwBFVI/AAAAAAAABSQ/RVkPmd9KB8Y/s400/rilievo_07.png" alt="" id="BLOGGER_PHOTO_ID_5340835339722364242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In fact things look a bit more crowded now:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/Sh51rX-EtQI/AAAAAAAABSY/B-N-OwkF_G8/s1600-h/rilievo_08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/Sh51rX-EtQI/AAAAAAAABSY/B-N-OwkF_G8/s400/rilievo_08.png" alt="" id="BLOGGER_PHOTO_ID_5340835596137182466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Better use the fieldbook to have a better look:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh529H_yaXI/AAAAAAAABSg/hkfsQIpIigg/s1600-h/rilievo_09.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sh529H_yaXI/AAAAAAAABSg/hkfsQIpIigg/s400/rilievo_09.png" alt="" id="BLOGGER_PHOTO_ID_5340837000598677874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Isn't that a helping hand for your job? It is for ours at least! :)&lt;br /&gt;&lt;br /&gt;Caveats:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;don't forget to write somewhere the time difference between the gps and the camera. Without that things will not work&lt;/li&gt;&lt;li&gt;you have to import the photos from the digital media of the camera directly, without coping it somewhere. This is due to the fact that java can read only the files last modification date and time (as opposed to the creation time, which would be much better in this case). So if you move it, that one will change. &lt;span style="font-weight: bold;"&gt;So if you have to move it, make sure to zip it to an archive, since that one, once extracted again, preserves the original timestamp&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;PS: I will try to make a build for those that would like to try in the next days. I first want to solve the "unable to load map" bug, which I finally know how to solve...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-8134640054597942509?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/8134640054597942509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=8134640054597942509' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8134640054597942509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/8134640054597942509'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/05/anatomy-of-field-mapping.html' title='Anatomy of a field mapping'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/Sh5yBTLhkrI/AAAAAAAABRg/OXssSWgNjjc/s72-c/rilievo_01.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-6338770750322503018</id><published>2009-05-25T08:56:00.011+02:00</published><updated>2009-05-25T10:15:51.924+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beegis'/><category scheme='http://www.blogger.com/atom/ns#' term='geonotes'/><category scheme='http://www.blogger.com/atom/ns#' term='docs'/><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>Digital field mapping enhancements</title><content type='html'>Last week we did a couple of days of digital field mapping with BeeGIS and the students of the University of Urbino.&lt;br /&gt;&lt;br /&gt;It has been a quite cool time and good places to see, but it also triggered some bugfixing and enhancements, which is good. Let's have a look at them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) the gps tool was not dummy proof&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;People not used to the tool tend to push every button very often and break things.&lt;br /&gt;So I reviewed the gps tool bar a bit and it looks like that:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpHOQxOVbI/AAAAAAAABQY/BCtW6GEfNT0/s1600-h/gps_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 256px; height: 32px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpHOQxOVbI/AAAAAAAABQY/BCtW6GEfNT0/s400/gps_01.png" alt="" id="BLOGGER_PHOTO_ID_5339658618546312626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;That means that no button is enabled until the gps is not logging.&lt;br /&gt;&lt;br /&gt;If you push the logging (first from left) button without having connected the gps, it will prompt you for it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpHk-04nrI/AAAAAAAABQg/azKYEEftB0s/s1600-h/gps_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 389px; height: 400px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpHk-04nrI/AAAAAAAABQg/azKYEEftB0s/s400/gps_02.png" alt="" id="BLOGGER_PHOTO_ID_5339659008866819762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;and after properly having set everything you can start to use the tools you like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpH1hGVLSI/AAAAAAAABQo/LXaJRLsxOlM/s1600-h/gps_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 262px; height: 32px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpH1hGVLSI/AAAAAAAABQo/LXaJRLsxOlM/s400/gps_03.png" alt="" id="BLOGGER_PHOTO_ID_5339659292944706850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) the layer creation was not gis-dummy proof&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When asking people to create a new layer on which to record gps point, line or polygon shapes on, people often got lost by that task. I agree that a person using the tool should know what he is doing and whioch projection he would like to use, but anyway, when you are on the field, things need to go much faster than usual.&lt;br /&gt;&lt;br /&gt;That's why I added three new buttons:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpI4G2Pl9I/AAAAAAAABQw/kop6A9oLTjA/s1600-h/gps_04.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 86px; height: 31px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpI4G2Pl9I/AAAAAAAABQw/kop6A9oLTjA/s400/gps_04.png" alt="" id="BLOGGER_PHOTO_ID_5339660436949145554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Those actions create new layer ready to work with. The user is only asked where (i.e. to which shapefile) to save the layer. The layer is then created with the current's map projection, loaded into the catalog and map on top of the other layers. The created layer contains only two field, both of type string, called name and description. The user is assumed to use these action only at the begin, afterwards the layer creation tool can be used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Give a look at the embedded database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A new view is available in JGrass and BeeGIS.&lt;br /&gt;Go in the window menu:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VHcYLjUYssM/ShpJ865xv-I/AAAAAAAABQ4/hmrCOMbE8Vg/s1600-h/gps_05.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 263px;" src="http://1.bp.blogspot.com/_VHcYLjUYssM/ShpJ865xv-I/AAAAAAAABQ4/hmrCOMbE8Vg/s400/gps_05.png" alt="" id="BLOGGER_PHOTO_ID_5339661619153715170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;select the &lt;span style="font-weight: bold;"&gt;other&lt;/span&gt; entry:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/ShpKHqVUh8I/AAAAAAAABRA/MBs9W8iVAV4/s1600-h/gps_06.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 276px; height: 400px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/ShpKHqVUh8I/AAAAAAAABRA/MBs9W8iVAV4/s400/gps_06.png" alt="" id="BLOGGER_PHOTO_ID_5339661803684399042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;and take the database view.&lt;br /&gt;&lt;br /&gt;This view connects and performs a login to the embedded database using the database preferences path, user and password:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpQTNlnLqI/AAAAAAAABRI/78cfXHFlv64/s1600-h/gps_07.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 260px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpQTNlnLqI/AAAAAAAABRI/78cfXHFlv64/s400/gps_07.png" alt="" id="BLOGGER_PHOTO_ID_5339668599196298914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and gives you a simple yet powerfull tool to browse the embedded database. This browser is usable only when you are using the H2 database, since it is the H2 itself that supplies this great tool.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpQ7YEKjUI/AAAAAAAABRQ/SfV9gOkNcAE/s1600-h/gps_08.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 260px;" src="http://4.bp.blogspot.com/_VHcYLjUYssM/ShpQ7YEKjUI/AAAAAAAABRQ/SfV9gOkNcAE/s400/gps_08.png" alt="" id="BLOGGER_PHOTO_ID_5339669289203567938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) sync your pictures&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Whenever the gps is logging, the points are saved in the database with the gps's utctime and position. This information can be used to import a set of pictures taken during the field trip and put them on a map in the proper position wrapped by geonotes.&lt;br /&gt;&lt;br /&gt;To do so go under File -&gt; import&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/ShpSkpQXcCI/AAAAAAAABRY/A7diwuURrac/s1600-h/gps_09.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 359px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/ShpSkpQXcCI/AAAAAAAABRY/A7diwuURrac/s400/gps_09.png" alt="" id="BLOGGER_PHOTO_ID_5339671097704411170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;and choose import photos.&lt;br /&gt;&lt;br /&gt;Tomorrow I will be on a field trip again. I will continue this afterwards, when I have taken tonns of gps points and images, in order to be able to show something real. Stay tuned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5) unable to load map&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We were not yet able to solve that, but finally we have a real error thrown that directed us to the part of code. If you have a map or a crs (seems to happen more often when Italian crs are used) for which the unable to load map always happens, please send it to us, since currently we are not able to reproduce it. But we are very near.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-6338770750322503018?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/6338770750322503018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=6338770750322503018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6338770750322503018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/6338770750322503018'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/05/digital-field-mapping-enhancements.html' title='Digital field mapping enhancements'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VHcYLjUYssM/ShpHOQxOVbI/AAAAAAAABQY/BCtW6GEfNT0/s72-c/gps_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-1823499632678340399</id><published>2009-04-28T12:27:00.005+02:00</published><updated>2009-04-28T12:39:11.926+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jgrass'/><title type='text'>New colormap features</title><content type='html'>I can't remember exactly how many times I was asked to improve the colormap editor for raster maps.&lt;br /&gt;&lt;br /&gt;For several reasons now I had to, so lucky the patient :)&lt;br /&gt;&lt;br /&gt;This is how it looks now (in the next build):&lt;br /&gt;&lt;br /&gt;We have the usual load from map, but now there is a consistent import and export possibility for colortables in GRASS format.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sfbaqv444fI/AAAAAAAABQA/zc0vrQIVVAw/s1600-h/color_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 262px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sfbaqv444fI/AAAAAAAABQA/zc0vrQIVVAw/s400/color_01.png" alt="" id="BLOGGER_PHOTO_ID_5329687636983996914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also there is a combobox containing predefined colotables:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VHcYLjUYssM/SfbbFq674GI/AAAAAAAABQI/3-oWJLmVNW0/s1600-h/color_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 262px;" src="http://2.bp.blogspot.com/_VHcYLjUYssM/SfbbFq674GI/AAAAAAAABQI/3-oWJLmVNW0/s400/color_02.png" alt="" id="BLOGGER_PHOTO_ID_5329688099506872418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So if I choose the elevation colortable, I get:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/SfbbRQpd1rI/AAAAAAAABQQ/1AzdGD2qx0M/s1600-h/color_03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 262px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/SfbbRQpd1rI/AAAAAAAABQQ/1AzdGD2qx0M/s400/color_03.png" alt="" id="BLOGGER_PHOTO_ID_5329688298612709042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When the colortable is chosen, the colorrules panel in the upper part updates itself, so it would be possible to modify that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-1823499632678340399?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/1823499632678340399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=1823499632678340399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1823499632678340399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/1823499632678340399'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/04/new-colormap-features.html' title='New colormap features'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/Sfbaqv444fI/AAAAAAAABQA/zc0vrQIVVAw/s72-c/color_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5970315134912558864.post-2566744275362005372</id><published>2009-04-20T22:48:00.006+02:00</published><updated>2009-04-20T23:20:49.720+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcements'/><title type='text'>Netcdf is the best that's yet to come?</title><content type='html'>Hui hui hui!!!&lt;br /&gt;&lt;br /&gt;As you might note in the&lt;a href="http://socghop.appspot.com/org/home/google/gsoc2009/osgeo"&gt; list of accepted applications for the Geospatial Foundation Osgeo&lt;/a&gt;, Google is gonna make us all a present... some founding to bring netcdf and temporal navigation support in JGrass-Udig and friends! The doors are open!&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://how2map.blogspot.com/"&gt;Jody &lt;/a&gt;for taking the burden to mentor me :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VHcYLjUYssM/Sezg43Ud2bI/AAAAAAAABPg/E-_kXKl5drw/s1600-h/jg3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 220px; height: 220px;" src="http://3.bp.blogspot.com/_VHcYLjUYssM/Sezg43Ud2bI/AAAAAAAABPg/E-_kXKl5drw/s400/jg3.jpg" alt="" id="BLOGGER_PHOTO_ID_5326879726799542706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Google for the summer of code.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://socghop.appspot.com/soc/content/images/gospo-logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 153px; height: 55px;" src="http://socghop.appspot.com/soc/content/images/gospo-logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://hydrologiclady.blogspot.com/"&gt;Silli &lt;/a&gt;for supporting this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, for being also the day I heard about Oracle buying up Sun... well, the day ended better than it started...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5970315134912558864-2566744275362005372?l=jgrasstechtips.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jgrasstechtips.blogspot.com/feeds/2566744275362005372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5970315134912558864&amp;postID=2566744275362005372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2566744275362005372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5970315134912558864/posts/default/2566744275362005372'/><link rel='alternate' type='text/html' href='http://jgrasstechtips.blogspot.com/2009/04/netcdf-is-best-thats-yet-to-come.html' title='Netcdf is the best that&apos;s yet to come?'/><author><name>andrea antonello</name><uri>https://profiles.google.com/109469601211264968948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-eFOd-hUWKVc/AAAAAAAAAAI/AAAAAAAAAAA/u7w09TMv9XM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VHcYLjUYssM/Sezg43Ud2bI/AAAAAAAABPg/E-_kXKl5drw/s72-c/jg3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
