<?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; software</title>
	<atom:link href="http://jduck.net/category/software/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>Scanning with sane&#8217;s scanimage from an ADF scanner to PDF and OCRed Text</title>
		<link>http://jduck.net/2008/01/05/ocr-scanning/</link>
		<comments>http://jduck.net/2008/01/05/ocr-scanning/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 17:34:21 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[scanning]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://jduck.net/2008/01/05/ocr-scanning/</guid>
		<description><![CDATA[Using libsane and tesseract, you can scan from an ADF (or non ADF) scanner in Ubuntu 7.10 to a PDF and OCR&#8217;ed text document with a few easy steps. First we need to make sure we have the necessary packages installed. apt-get install tesseract-ocr sane-utils The tesseract-ocr package gives us a utility called tesseract which [...]]]></description>
			<content:encoded><![CDATA[<p>Using libsane and tesseract, you can scan from an ADF (or non ADF) scanner in Ubuntu 7.10 to a PDF and OCR&#8217;ed text document with a few easy steps.</p>
<p>First we need to make sure we have the necessary packages installed.</p>
<pre>
apt-get install tesseract-ocr sane-utils
</pre>
<p><span id="more-110"></span></p>
<p>The tesseract-ocr package gives us a utility called tesseract which takes a TIFF file as input and will output the OCR&#8217;d .txt file of the tiff.</p>
<pre>
tesseract my.tif output
</pre>
<p>Now we need a command line method to grab the TIFF, sane-utils comes to the rescue.  The command &#8220;scanimage&#8221; from sane will let us do that.  It is a great little utility that I recommend reading up on to learn more about its features and options, as they may vary based on the type of scanner you have.  My scanner has an Auto Document Feeder (ADF) so be aware that my instructions are specific to an ADF scanner.</p>
<p>This example is for scanning a letter sized piece of paper in batch mode saving output in the format of a TIFF</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">scanimage <span style="color: #660033;">-y</span> <span style="color: #000000;">279.4</span> <span style="color: #660033;">-x</span> <span style="color: #000000;">215.9</span> <span style="color: #660033;">--batch</span> <span style="color: #660033;">--format</span>=tiff <span style="color: #660033;">--mode</span> Lineart <span style="color: #660033;">--resolution</span> <span style="color: #000000;">300</span> <span style="color: #660033;">--source</span> ADF</pre></div></div>

<p>This will output a new TIFF for each page that is scanned.</p>
<p>The below script combines several steps to output a single PDF document and .txt file for a scan job.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">outname</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">startdir</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">tmpdir</span>=scan-<span style="color: #007800;">$RANDOM</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>tmp
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$tmpdir</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$tmpdir</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;################## Scanning ###################&quot;</span>
scanimage <span style="color: #660033;">-y</span> <span style="color: #000000;">279.4</span> <span style="color: #660033;">-x</span> <span style="color: #000000;">215.9</span> <span style="color: #660033;">--batch</span> <span style="color: #660033;">--format</span>=tiff <span style="color: #660033;">--mode</span> Lineart <span style="color: #660033;">--resolution</span> <span style="color: #000000;">300</span> <span style="color: #660033;">--source</span> ADF
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;################### OCRing ####################&quot;</span>
<span style="color: #007800;">i</span>=<span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">for</span> page <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">*</span>.tif<span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;Page: <span style="color: #007800;">$i</span> - &quot;</span>
        <span style="color: #666666; font-style: italic;">#run tesseract on each page and combine the outputs in a single file with a .txt extension.</span>
        tesseract <span style="color: #007800;">$page</span> <span style="color: #007800;">$page</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;---BEGIN PAGE: <span style="color: #007800;">$i</span> ---&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$outname</span>.txt
        <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$page</span>.txt <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$outname</span>.txt
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;---END PAGE: $1 ---&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$outname</span>.txt
        <span style="color: #007800;">i</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">expr</span> <span style="color: #007800;">$i</span> + <span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$outname</span>.txt <span style="color: #007800;">$startdir</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;############## Converting to PDF ##############&quot;</span>
<span style="color: #666666; font-style: italic;">#Use tiffcp to combine output tiffs to a single mult-page tiff</span>
tiffcp <span style="color: #660033;">-c</span> lzw out<span style="color: #000000; font-weight: bold;">*</span>.tif output.tif 
<span style="color: #666666; font-style: italic;">#Convert the tiff to PDF</span>
tiff2pdf output.tif <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$startdir</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$outname</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> ..
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;################ Cleaning Up ################&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$tmpdir</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$startdir</span></pre></div></div>

<p>I name the above script &#8220;scandoc&#8221; and it can be run by typing &#8220;scandoc myoutput.pdf&#8221; which will drop a pdf file (called myoutput.pdf) and a .txt (called myoutput.pdf.txt) file in the current directory with all the pages from the ADF.  Very handy!</p>
<p><strong>EDIT:</strong><br />
I&#8217;ve added Joe&#8217;s contributions in the comments to a <a href="http://gist.github.com/311548">gist</a> at github. </p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2008/01/05/ocr-scanning/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>ntfsundelete</title>
		<link>http://jduck.net/2007/12/20/ntfsundelete/</link>
		<comments>http://jduck.net/2007/12/20/ntfsundelete/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 20:06:54 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jduck.net/2007/12/20/ntfsundelete/</guid>
		<description><![CDATA[Just did a stupid thing and deleted a whole tree of file on a windows partition. Never fear&#8230;ntfsundelete is here. sudo ntfsundelete -u -d /destination/directory -f -m *.jpg /dev/sda1 Run without the -u option and -d options to show what can be recovered. On ubuntu/debian to install it do: apt-get install ntfsprogs]]></description>
			<content:encoded><![CDATA[<p>Just did a stupid thing and deleted a whole tree of file on a windows partition.  Never fear&#8230;ntfsundelete is here.</p>
<pre>
sudo ntfsundelete -u -d /destination/directory -f -m *.jpg /dev/sda1
</pre>
<p>Run without the -u option and -d options to show what can be recovered.</p>
<p>On ubuntu/debian to install it do:</p>
<pre>
apt-get install ntfsprogs
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2007/12/20/ntfsundelete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting to know PostGIS</title>
		<link>http://jduck.net/2007/11/06/getting-to-know-postgis/</link>
		<comments>http://jduck.net/2007/11/06/getting-to-know-postgis/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 14:45:13 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[geospatial]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://jduck.net/2007/11/06/getting-to-know-postgis/</guid>
		<description><![CDATA[I am making the plunge to get more informed with how to use PostGIS. It is pretty impressive so far. Here is a quick tutorial which shows you how to get started and loading in a shapefile to play around with some fun SQL querying. I assume a basic understanding of the linux command line [...]]]></description>
			<content:encoded><![CDATA[<p>I am making the plunge to get more informed with how to use PostGIS.  It is pretty impressive so far.  Here is a quick tutorial which shows you how to get started and loading in a shapefile to play around with some fun SQL querying.  I assume a basic understanding of the linux command line and some basic SQL skills. </p>
<p>To get started in ubuntu 7.04 (should work in 7.10 and debian too):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> postgis postgresql-<span style="color: #000000;">8.1</span>-postgis</pre></div></div>

<p>Next we&#8217;ll start setting up the PostGIS environment.<br />
<span id="more-104"></span></p>
<p>Then we need to set up a new database, I called mine geodb:</p>

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

<p>We then need to bind it to the PostGIS libs with the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ createlang plpgsql geodb</pre></div></div>

<p>And finally add the PostGIS Tables:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ psql <span style="color: #660033;">-d</span> mytestdb <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>postgresql-<span style="color: #000000;">8.1</span>-postgis<span style="color: #000000; font-weight: bold;">/</span>lwpostgis.sql
$ psql <span style="color: #660033;">-d</span> mytestdb <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>postgresql-<span style="color: #000000;">8.1</span>-postgis<span style="color: #000000; font-weight: bold;">/</span>spatial_ref_sys.sql</pre></div></div>

<p>Phew&#8230;.that was a bit of work.</p>
<p>Now we&#8217;re ready to go.  We have a database called geodb and we&#8217;ve told PostgreSQL that it is a PostGIS database.</p>
<p>So now we can use the shp2pgsql command to import a shapefile into the db:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ shp2pgsql <span style="color: #660033;">-W</span> LATIN1 <span style="color: #660033;">-D</span> <span style="color: #660033;">-I</span> myshapefile.shp mytablename <span style="color: #000000; font-weight: bold;">|</span> psql geodb</pre></div></div>

<p>-W is for setting the encoding type, I had problems with many shapefiles as my locale is UTF8 and PostgreSQL seems to default to the locale.  For me LATIN1 has been working better.</p>
<p>-D sets the SQL output to be in dump format for insertion into the database.</p>
<p>-I flags it to compute the spatial indexing upon import.  For large complex vector features this can take awhile, so use with discretion.</p>
<p>All of this is piped to </p>
<p>This gives us a new table called &#8220;tablename&#8221;, which we can see by doing the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ psql geodb
Welcome to psql 8.1.8, the PostgreSQL interactive terminal.
&nbsp;
Type:  \\copyright <span style="color: #000000; font-weight: bold;">for</span> distribution terms
       \\h <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #7a0874; font-weight: bold;">help</span> with SQL commands
       \\? <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #7a0874; font-weight: bold;">help</span> with psql commands
       \\g or terminate with semicolon to execute query
       \\q to quit
&nbsp;
<span style="color: #007800;">geodb</span>=<span style="color: #666666; font-style: italic;">#</span></pre></div></div>

<p>At the PostgreSQL prompt you can enter various SQL commands including queries.  </p>
<pre>geodb=# \\d mytablename</pre>
<p>shows the columns and data types of the data in the table.</p>
<p>Notice the column called: the_geom</p>
<p>This is where the <a href="http://postgis.refractions.net/docs/ch04.html#RefObject">GIS Objects</a> are stored.</p>
<p>The sample query there would show all the data in the shapefile&#8217;s associated .dbf as well as a column called </p>
<p>Next time we&#8217;ll launch into some querying fun.</p>
<p><a href="http://jduck.net/2009/01/30/getting-to-know-postgis-part-ii/">Onward to Part II&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2007/11/06/getting-to-know-postgis/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Intuitive Flight Selection Interface</title>
		<link>http://jduck.net/2007/05/01/intuitive-flight-selection-interface/</link>
		<comments>http://jduck.net/2007/05/01/intuitive-flight-selection-interface/#comments</comments>
		<pubDate>Tue, 01 May 2007 16:09:38 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[infoviz]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://jduck.net/2007/05/01/intuitive-flight-selection-interface/</guid>
		<description><![CDATA[While ITA Software doesn&#8217;t allow you to purchase directly from their flight search, they do provide a nice airfare search and grid view where you can see mapped out in time how much of the day the flight and associated layovers will take. Pretty neat.]]></description>
			<content:encoded><![CDATA[<p><a href='http://jduck.net/blog/wp-content/uploads/2007/05/flightchooser.png' title='Flight Chooser'><img src='http://jduck.net/blog/wp-content/uploads/2007/05/flightchooser.thumbnail.png' alt='Flight Chooser' /></a><br />
While <a href="http://www.itasoftware.com/">ITA Software</a> doesn&#8217;t allow you to purchase directly from their flight search, they do provide a nice airfare search and grid view where you can see mapped out in time how much of the day the flight and associated layovers will take.  Pretty neat.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2007/05/01/intuitive-flight-selection-interface/feed/</wfw:commentRss>
		<slash:comments>2</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>
		<item>
		<title>BBC Video</title>
		<link>http://jduck.net/2006/12/22/zudeo-high-definition-movies-and-videos/</link>
		<comments>http://jduck.net/2006/12/22/zudeo-high-definition-movies-and-videos/#comments</comments>
		<pubDate>Fri, 22 Dec 2006 15:19:46 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jduck.net/2006/12/22/zudeo-high-definition-movies-and-videos/</guid>
		<description><![CDATA[Interesting news in the world of BitTorrent. The BBC has agreed to make much of their content available through Zudeo. I haven&#8217;t used Zudeo at all, but it looks like it is probably just a pretty front end to Azureus, everyone&#8217;s favorite BitTorrent Site.]]></description>
			<content:encoded><![CDATA[<p>Interesting news in the world of BitTorrent.  The <a href="http://news.bbc.co.uk/2/hi/technology/6194929.stm">BBC</a> has agreed to make much of their content available through <a href="http://www.zudeo.com/az-web/app">Zudeo</a>.  I haven&#8217;t used Zudeo at all, but it looks like it is probably just a pretty front end to Azureus, everyone&#8217;s favorite BitTorrent Site.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2006/12/22/zudeo-high-definition-movies-and-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Package of the Day</title>
		<link>http://jduck.net/2006/12/20/debian-package-of-the-day/</link>
		<comments>http://jduck.net/2006/12/20/debian-package-of-the-day/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 21:47:07 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jduck.net/2006/12/20/debian-package-of-the-day/</guid>
		<description><![CDATA[Another attempt at showcasing an interesting Debian package each day.  They have already shown one of my favorites along with something I didn&#8217;t know was out there.  python-scipy is great and has helped me produce the spectrogram I posted about a few weeks ago.  And scribus looks like it will be an interesting application to [...]]]></description>
			<content:encoded><![CDATA[<p>Another attempt at showcasing an interesting <a href="http://debaday.debian.net/">Debian package each day</a>.  They have already shown one of my favorites along with something I didn&#8217;t know was out there.  <a href="http://www.scipy.org/">python-scipy</a> is great and has helped me produce the spectrogram I posted about a few weeks ago.  And <a href="http://scribus.sourceforge.net/">scribus</a> looks like it will be an interesting application to explore further&#8230;heads off typing apt-get install scribus.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2006/12/20/debian-package-of-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working on CV in LaTex</title>
		<link>http://jduck.net/2006/12/14/working-on-cv-in-latex/</link>
		<comments>http://jduck.net/2006/12/14/working-on-cv-in-latex/#comments</comments>
		<pubDate>Thu, 14 Dec 2006 14:10:00 +0000</pubDate>
		<dc:creator>Jonah</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jduck.net/2006/12/14/working-on-cv-in-latex/</guid>
		<description><![CDATA[More LaTex fun. I realized I could create both a CV and a Resume using LaTex by separating out the sections (education, publications, work experience, awards) into individual files. LaTex has an \input{filename} function which is useful for splitting large documents up. It just inputs whatever text is in that file like you had typed [...]]]></description>
			<content:encoded><![CDATA[<p>More LaTex fun.  I realized I could create both a CV and a Resume using LaTex by separating out the sections (education, publications, work experience, awards) into individual files.  LaTex has  an \input{filename} function which is useful for splitting large documents up.  It just inputs whatever text is in that file like you had typed it in the main file.  Once I break up the parts, such as education, publications, work experience into different files I can create an uber document that references things appropriate for the CV, and another referencing only those appropriate for the resume.  Then I only need to edit the appropriate section file and it updates both, yay LaTex.</p>
]]></content:encoded>
			<wfw:commentRss>http://jduck.net/2006/12/14/working-on-cv-in-latex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
