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

<channel>
	<title>jduck.net &#187; oss</title>
	<atom:link href="http://jduck.net/category/oss/feed/" rel="self" type="application/rss+xml" />
	<link>http://jduck.net</link>
	<description></description>
	<lastBuildDate>Fri, 02 Jul 2010 13:01:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Getting to know PostGIS Part II</title>
		<link>http://jduck.net/2009/01/30/getting-to-know-postgis-part-ii/</link>
		<comments>http://jduck.net/2009/01/30/getting-to-know-postgis-part-ii/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 19:27:36 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[geospatial]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://jduck.net/?p=131</guid>
		<description><![CDATA[So its been over six months since I made my first tutorial post about PostGIS. I now use PostGIS on a regular basis and thought it would be good to update the tutorial with some meat on how to use PostGIS. Get some data and import it Grab populated places points wget http://edcftp.cr.usgs.gov/pub/data/nationalatlas/citiesx020.tar.gz Grab US [...]]]></description>
			<content:encoded><![CDATA[<p>So its been over six months since I made <a href="http://jduck.net/2007/11/06/getting-to-know-postgis/">my first tutorial</a> post about PostGIS.  I now use PostGIS on a regular basis and thought it would be good to update the tutorial with some meat on how to use PostGIS.</p>
<h3>Get some data and import it</h3>
<h4>Grab populated places points</h4>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>edcftp.cr.usgs.gov<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>nationalatlas<span style="color: #000000; font-weight: bold;">/</span>citiesx020.tar.gz</pre></div></div>

<p>Grab US counties map:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>edcftp.cr.usgs.gov<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>nationalatlas<span style="color: #000000; font-weight: bold;">/</span>countyp020.tar.gz</pre></div></div>

<p>Lots more data available in the <a href="http://www.nationalatlas.gov/atlasftp.html">National Atlas</a><br />
<span id="more-131"></span></p>
<h4>Extract shapefiles from the two archives</h4>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzvf</span> citiesx020.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzvf</span>  countyp020.tar.gz</pre></div></div>

<h4>Ogrinfo the files to have a look at them</h4>
<pre>
ogrinfo citiesx020.shp
INFO: Open of `citiesx020.shp'
      using driver `ESRI Shapefile' successful.
1: citiesx020 (Point) 

ogrinfo countyp020.shp
INFO: Open of `countyp020.shp'
      using driver `ESRI Shapefile' successful.
1: countyp020 (Polygon)
</pre>
<p>Notice that the cities shapefile is a point layer and the county layer is a polygon layer.</p>
<h4>Import the two shape files into your PostGIS db </h4>
<p>To get started with PostGIS see my <a href="http://jduck.net/2007/11/06/getting-to-know-postgis/">first tutorial</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ogr2ogr <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;PostgreSQL&quot;</span> -s_srs EPSG:<span style="color: #000000;">4269</span> <span style="color: #ff0000;">&quot;PG:dbname=mydbname&quot;</span> countyp020.shp <span style="color: #660033;">-nln</span> us_counties
ogr2ogr <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;PostgreSQL&quot;</span> -s_srs EPSG:<span style="color: #000000;">4269</span> <span style="color: #ff0000;">&quot;PG:dbname=mydbname&quot;</span> citiesx020.shp <span style="color: #660033;">-nln</span> us_cities</pre></div></div>

<p>Make sure you change mydbname to your database&#8217;s name.</p>
<li>-f &#8220;PostgreSQL&#8221; says that our destination &#8220;file type&#8221; is a PostgreSQL database</li>
<li>The -s_srs sets the source spatial reference system for the shapefiles.  Shapefiles from the National Atlas do not have a .prj file which defines their projection, so I looked in the .txt file which came with each archive from the National Atlas and found that the they are in <a href="http://spatialreference.org/ref/epsg/4269/">NAD83</a>, or EPSG:4269</li>
<li>&#8220;PG:dbname=mydbname&#8221; tells ogr2ogr what your destination is (in this case a PostGIS server).  More options are possible in the <a href="http://gdal.org/ogr/drv_pg.html">OGR driver</a></li>
<li>the shapfile name specifies the source</li>
<li>-nln specifies a new layer name which will be the name of the table in our database</li>
<h4>Checking the Import</h4>
<pre>
psql mydbname
mydbname# \d us_cities
                                   Table "public.us_cities"
    Column    |       Type       |                          Modifiers
--------------+------------------+-------------------------------------------------------------
 ogc_fid      | integer          | not null default nextval('us_cities_ogc_fid_seq'::regclass)
 wkb_geometry | geometry         |
 citiesx020   | double precision |
 feature      | character(27)    |
 name         | character(48)    |
 pop_range    | character(21)    |
 pop_2000     | numeric(8,0)     |
 fips55       | character(5)     |
 county       | character(55)    |
 fips         | character(5)     |
 state        | character(2)     |
 state_fips   | character(2)     |
 display      | numeric(1,0)     |
Indexes:
    "us_cities_pk" PRIMARY KEY, btree (ogc_fid)
    "us_cities_geom_idx" gist (wkb_geometry)
Check constraints:
    "enforce_dims_wkb_geometry" CHECK (ndims(wkb_geometry) = 2)
    "enforce_geotype_wkb_geometry" CHECK (geometrytype(wkb_geometry) = 'POINT'::text OR wkb_geometry IS NULL)
    "enforce_srid_wkb_geometry" CHECK (srid(wkb_geometry) = -1)
</pre>
<p>You can see that ogr2ogr has imported the shapefile, created a primary key (ogc_fid) and created a spatial index. What you can&#8217;t see is that ogr2ogr was also nice enough to add an entry to the geometry_columns table so that postgis tools know that there is a geometry column (wkb_geometry) in this table.</p>
<h4>Looking at the Data</h4>
<p>Lets fire off <a href="http://www.qgis.org/">qgis</a> and see what we have<br />
<a href="http://jduck.net/blog/blog/wp-content/uploads/2009/01/city_county.png"><img src="http://jduck.net/blog/blog/wp-content/uploads/2009/01/city_county-300x132.png" alt="city_county" title="city_county" width="300" height="132" class="aligncenter size-medium wp-image-151" /></a></p>
<p>Next time, querying with spatial predicates&#8230;.I promise it won&#8217;t take six months for the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2009/01/30/getting-to-know-postgis-part-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Install MacPorts in Local Home Directory</title>
		<link>http://jduck.net/2008/12/12/install-macports-in-local-home-directory/</link>
		<comments>http://jduck.net/2008/12/12/install-macports-in-local-home-directory/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 15:26:40 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[macosx]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://jduck.net/?p=142</guid>
		<description><![CDATA[I was needing to install MacPorts on a multi-user system where I didn&#8217;t have root access. Here is what I did. mkdir ${HOME}/macports cd ${HOME}/macports wget http://svn.macports.org/repository/macports/downloads/MacPorts-1.6.0/MacPorts-1.6.0.tar.gz tar -xzvf MacPorts-1.6.0.tar.gz cd MacPorts-1.6.0 ./configure --prefix=${HOME}/macports --with-tclpackage=${HOME}/macports/tcl \ --with-install-user=${USER} --with-install-group=${USER} make make install You will now have a macports directory in your home directory: $ ls macports [...]]]></description>
			<content:encoded><![CDATA[<p>I was needing to install MacPorts on a multi-user system where I didn&#8217;t have root access.  Here is what I did.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #800000;">${HOME}</span><span style="color: #000000; font-weight: bold;">/</span>macports
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #800000;">${HOME}</span><span style="color: #000000; font-weight: bold;">/</span>macports
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>svn.macports.org<span style="color: #000000; font-weight: bold;">/</span>repository<span style="color: #000000; font-weight: bold;">/</span>macports<span style="color: #000000; font-weight: bold;">/</span>downloads<span style="color: #000000; font-weight: bold;">/</span>MacPorts-1.6.0<span style="color: #000000; font-weight: bold;">/</span>MacPorts-1.6.0.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzvf</span> MacPorts-1.6.0.tar.gz
<span style="color: #7a0874; font-weight: bold;">cd</span> MacPorts-1.6.0
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #800000;">${HOME}</span><span style="color: #000000; font-weight: bold;">/</span>macports <span style="color: #660033;">--with-tclpackage</span>=<span style="color: #800000;">${HOME}</span><span style="color: #000000; font-weight: bold;">/</span>macports<span style="color: #000000; font-weight: bold;">/</span>tcl \
<span style="color: #660033;">--with-install-user</span>=<span style="color: #800000;">${USER}</span> <span style="color: #660033;">--with-install-group</span>=<span style="color: #800000;">${USER}</span>
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>You will now have a macports directory in your home directory:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">ls</span> macports
bin     etc     include lib     libexec <span style="color: #c20cb9; font-weight: bold;">man</span>     sbin    share   src     tcl     var     www</pre></div></div>

<p>Add ${HOME}/macports/bin to your path and you&#8217;ll be able to run &#8220;port install *portname*&#8221; ports you install will get installed in your home directory.  Handy for any little tools you need to have available that might not be built on the system you&#8217;re using.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2008/12/12/install-macports-in-local-home-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using OGR to convert GIS Vector formats</title>
		<link>http://jduck.net/2008/07/18/using-ogr-to-convert-gis-vector-formats/</link>
		<comments>http://jduck.net/2008/07/18/using-ogr-to-convert-gis-vector-formats/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 21:34:36 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[geospatial]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oss]]></category>

		<guid isPermaLink="false">http://jduck.net/2008/07/18/using-ogr-to-convert-gis-vector-formats/</guid>
		<description><![CDATA[OGR is a part of GDAL and is very useful for converting between geospatial vector formats. What does that mean? When storing Vector GIS data there are a dizzying number of formats it can be stored in, some of the more popular of late, or at least well known are KML and SHP. A friend [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gdal.org/ogr/">OGR</a> is a part of <a href="http://www.gdal.org/">GDAL</a> and is very useful for converting between geospatial <a href="http://www.gdal.org/ogr/ogr_formats.html">vector formats</a>.  What does that mean?  When storing Vector GIS data there are a dizzying number of formats it can be stored in, some of the more popular of late, or at least well known are KML and SHP.  A friend of a friend was looking to convert some SHP (Shapefiles) into KML so that he could make a Google Maps mashup and I helped him out.  Here is a workflow for how I went about performing the conversion.<br />
<span id="more-115"></span><br />
OGR can be installed on debian/ubuntu machines by installing the package gdal-bin:</p>
<pre>sudo apt-get install gdal-bin</pre>
<p>Once you have GDAL/OGR installed you get a slew of command line utilities, I&#8217;ll try to cover some others in later tutorials, but for now we&#8217;re interested in ogr2ogr.  ogr2ogr converts between the vector formats that OGR understands.</p>
<p>Example using a shapefile at the city of chicago website:<br />
Download the data</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>egov.cityofchicago.org<span style="color: #000000; font-weight: bold;">/</span>webportal<span style="color: #000000; font-weight: bold;">/</span>COCWebPortal<span style="color: #000000; font-weight: bold;">/</span>COC_ATTACH<span style="color: #000000; font-weight: bold;">/</span>TIFS2008.zip</pre></div></div>

<p>Unzip it</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">unzip</span> TIFS2008.zip</pre></div></div>

<p>Now we have to do the hard part (not really that hard, but important), look for the projection information in the metadata.  I looked in the tifs.shp.xml file and found that the projections is:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">NAD_1983_StatePlane_Illinois_East_FIPS_1201_Feet</pre></div></div>

<p>Google uses WGS84 spatial reference system.<br />
Now we have to lookup EPSG codes that OGR understands for these projections.  A good spot to do this is <a href="http://spatialreference.org">spatialreference.org</a>.  EPSG codes provide a short form of expressing projection and spatial reference information.<br />
Once we have that all sorted out we&#8217;re ready to run ogr2ogr:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ogr2ogr <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;KML&quot;</span> -s_srs <span style="color: #ff0000;">&quot;EPSG:102671&quot;</span> -t_srs <span style="color: #ff0000;">&quot;EPSG:4326&quot;</span> tifs.kml tifs.shp</pre></div></div>

<p>The -f &#8220;KML&#8221; specifies that we want the output in KML.  -s_srs is the source (tifs.shp) spatial reference system and -t_srs is the target spatial reference system found at spatialreference.org, then we specify the output file tifs.kml and the input file tifs.shp.  That is it!</p>
<p>Lets shrink it down into a kmz (compressed kml) so that it takes up less disk space.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">zip</span> tifs.kmz tifs.kml</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2008/07/18/using-ogr-to-convert-gis-vector-formats/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wikifying my life</title>
		<link>http://jduck.net/2007/03/02/wikifying-my-life/</link>
		<comments>http://jduck.net/2007/03/02/wikifying-my-life/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 01:24:44 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gradwork]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[oss]]></category>

		<guid isPermaLink="false">http://jduck.net/2007/03/02/wikifying-my-life/</guid>
		<description><![CDATA[I started working on my PhD proposal and decided that it would be best done as a wiki. I have been using MoinMoin for a wiki in my lab with my labmates. I like MoinMoin, but I don&#8217;t like how much of a pain it is to install it on debian. I decided to go [...]]]></description>
			<content:encoded><![CDATA[<p>I started working on my PhD proposal and decided that it would be best done as a wiki.  I have been using <a href="http://moinmoin.wikiwikiweb.de/">MoinMoin</a> for a wiki in my lab with my labmates.  I like MoinMoin, but I don&#8217;t like how much of a pain it is to install it on debian.  I decided to go back to <a href="http://www.mediawiki.org/">mediawiki</a> as it seems to be performing a bit better these days and is increasingly the standard wiki markup.  So I have a mediawiki set up now for tracking my research, my reading and my PhD proposal.  I might even get really brave and do my whole dissertation in wiki form.<br />
<span id="more-78"></span><br />
Once I got started on the proposal in wiki form I decided I could probably track all of my simulation analysis by logging the steps I take on the wiki.  This required finding some code that acts as a wiki client so that I can effectively pipe output directly to a wiki page, say Log:2007-XX-XX, or a new topic appropriate log for every day.  Looking for awhile, I have found two tools that can do this in one way or another.  <a href="http://search.cpan.org/~markj/WWW-Mediawiki-Client/bin/mvs">mvs</a>, and <a href="http://wikipediafs.sourceforge.net/">wikipediafs</a>.  mvs will work wherever there is Perl with the appropriate Perl modules and wikipediafs depends on the FUSE system in Linux.  They both look promising.  More on this later as I get some examples going.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2007/03/02/wikifying-my-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synergy</title>
		<link>http://jduck.net/2007/03/02/synergy/</link>
		<comments>http://jduck.net/2007/03/02/synergy/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 23:11:51 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jduck.net/2007/03/02/synergy/</guid>
		<description><![CDATA[Synergy is a network KVM. It is great if you have multiple computers. I have a setup with a Powerbook, WinXP and Ubuntu Laptop all controlled by the same keyboard and mouse (across four screens) merged together into one desktop. It is a beautiful thing&#8230; Some simple config examples after the jump. This is my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://synergy2.sourceforge.net/">Synergy</a> is a network KVM.  It is great if you have multiple computers.  I have a setup with a Powerbook, WinXP and Ubuntu Laptop all controlled by the same keyboard and mouse (across four screens) merged together into one desktop.  It is a beautiful thing&#8230;  Some simple config examples after the jump.</p>
<p><span id="more-77"></span></p>
<p>This is my linux config file (~/.synergy.conf), create one if it doesn&#8217;t exist</p>
<pre>section: screens
  laptop:
  desktop:
end
section: links
laptop:
  right = desktop
desktop:
  left = laptop
end</pre>
<p>(adjust to suit your needs)</p>
<p>The documentation is pretty good, so this should get you started.</p>
<p>Then I connect using synergyc:</p>
<pre>synergyc --name laptop xxx.xxx.xxx.xxx</pre>
<p>where xxx.xxx.xxx.xxx is the name of the computer with the server running on it.</p>
<p>As you can see there is no security to speak of keeping others from controlling your system&#8217;s mouse and keyboard, so on hostile networks it is probably best to block the port and tunnel over ssh.</p>
<p>This would be great to set up an ad-hoc multi-head system when getting together with colleagues to work collaboratively with a bunch of laptops.  Haven&#8217;t tried that yet, but it would be pretty slick.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2007/03/02/synergy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
