<?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>michalisavraam.org blog</title>
	<atom:link href="http://michalisavraam.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://michalisavraam.org</link>
	<description>a spatial web presence</description>
	<lastBuildDate>Mon, 24 May 2010 17:17:47 +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>ArcGIS.com now online as a public Beta</title>
		<link>http://michalisavraam.org/2010/05/arcgis-com-now-online-as-a-public-beta/</link>
		<comments>http://michalisavraam.org/2010/05/arcgis-com-now-online-as-a-public-beta/#comments</comments>
		<pubDate>Mon, 24 May 2010 17:17:47 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[arcgis.com]]></category>
		<category><![CDATA[cartography]]></category>
		<category><![CDATA[geo-web]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[web gis]]></category>
		<category><![CDATA[web mapping]]></category>
		<category><![CDATA[web maps]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=314</guid>
		<description><![CDATA[The new ArcGIS.com from ESRI is officially online as a public Beta version. We have successfully moved from a dark background to white, as can be seen on the right. In order to make use of the new service, you either create a new account, or register your esri.com account with ArcGIS.com as well (which [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2010/03/arcgis-com-now-online/' rel='bookmark' title='Permanent Link: ArcGIS.com now online'>ArcGIS.com now online</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The new <a href="http://www.arcgis.com/">ArcGIS.com</a> from ESRI is officially online as a public Beta version. We have successfully moved from a dark background to white, as can be seen on the right.</p>
<div id="attachment_316" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online.png"><img class="size-medium wp-image-316" title="ArcGIS Online Beta" src="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-300x171.png" alt="ArcGIS Online Beta" width="300" height="171" /></a><p class="wp-caption-text">ArcGIS Online Beta Screenshot</p></div>
<p><span id="more-314"></span></p>
<p>In order to make use of the new service, you either create a new account, or register your esri.com account with ArcGIS.com as well (which is what I did). You are presented with a few options when you log in, including a Gallery (viewing), Map (creation), Groups (collaboration) and My Content (management). All functionality seems to be working find from my end at least, and I encountered no errors through my limited testing of their website (way to go ESRI).</p>
<h3>Gallery (viewing)</h3>
<p>The Gallery allow</p>
<div id="attachment_328" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-Gallery.png"><img class="size-medium wp-image-328" title="ArcGIS Online - Gallery" src="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-Gallery-300x194.png" alt="ArcGIS.com Gallery" width="300" height="194" /></a><p class="wp-caption-text">ArcGIS.com Gallery</p></div>
<p>s you to view maps, tools and applications provided by other users. There are some nice examples of maps out there, notably the Gulf Oil Spill Forecast map provided by ESRI and the Gulf of Mexico Oil Spill map provided by the user community (nice ones to compare and contrast). Some cool tools include the Decision Tree election application that lets people create priority maps by moving around sliders and the Recovery.gov mapping application. There is also a number of Mobile Apps available, which I have not had the pleasure of testing (if anyone wants to sponsor me for an iPhone or Windows Mobile phone.. <img src='http://michalisavraam.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<h3>Map (creation)</h3>
<div id="attachment_321" class="wp-caption alignleft" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/05/Map-ArcGIS-Online.png"><img class="size-medium wp-image-321 " title="Map - ArcGIS Online" src="http://michalisavraam.org/wp-content/uploads/2010/05/Map-ArcGIS-Online-300x171.png" alt="Map Creation on ArcGIS.com Online" width="300" height="171" /></a><p class="wp-caption-text">Map Creation on ArcGIS.com Online</p></div>
<p>Creating your own maps is part of the offered functionality, in which you choose from a number of base maps (including Bing Maps basemaps, OpenStreetMap or the usual ESRI offerings), and then adding your own layers from online services (meaning you need someone to serve data for you). This opens up quite a few possibilities, and may (hopefully) mean that ESRI does plan on releasing a cheap (or better yet, free) way for people to serve their data (which is My Content). For now, you will have to trust ESRI in hosting your data if you wish, by visiting the &#8220;My Content&#8221; tab. Maps can be created fast and saved with permission options (including saving for personal use, share with group(s) or publicly available.</p>
<h3>Groups (collaboration)</h3>
<div id="attachment_326" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-My-Groups.png"><img class="size-medium wp-image-326" title="ArcGIS Online - My Groups" src="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-My-Groups-300x173.png" alt="ArcGIS Online - My Groups" width="300" height="173" /></a><p class="wp-caption-text">ArcGIS Online - My Groups</p></div>
<p>The My Groups section allows you to collaborate with other users. There are already 899 groups as of this post. Some interesting ones to note are the &#8220;ESRI Featured Content&#8221; which provides a lot of maps, applications and tools, the &#8220;National Maps for USA&#8221; by the aptly named  Federal_User_Community user, and many more. Unfortunately, the search method for groups implies you are already familiar with a group name or keywords from their description, if any. I would love to see a Groups browser, which allows you to browse groups on these different parameters: spatial extent, content theme, tools available or in development, applications available or in development, whether they seek help or simply offer services. This is perhaps the next move by ESRI, to create a community of developers rather than simply users of the technology.</p>
<h3>My Content (data management)</h3>
<div id="attachment_327" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-My-Content.png"><img class="size-medium wp-image-327" title="ArcGIS Online - My Content" src="http://michalisavraam.org/wp-content/uploads/2010/05/ArcGIS-Online-My-Content-300x181.png" alt="ArcGIS.com My Content" width="300" height="181" /></a><p class="wp-caption-text">ArcGIS.com My Content</p></div>
<p>My Content is where one can upload their own content, as well as manage content. Note this is an extension of simply data management, as tools, applications and maps can be managed through this page. The supported items are as follows:</p>
<ol>
<li>Maps
<ol>
<li>Web map</li>
<li>ArcGIS Server Map, Image or Feature Service</li>
<li>Map Package (mpk)</li>
<li>Layer Package (lpk)</li>
<li>ArcGIS Explorer Document (nmf) or Application Configuration (ncfg)</li>
<li>ArcGIS Windows Mobile Package (wmpk)</li>
<li>ArcMap Document (mxd and msd) &#8211; not recommended</li>
<li>Layer File &#8211; not recommended</li>
<li>ArcGIS Explorer Layet (nmc) &#8211; not recommended</li>
<li>ArcGlobe Document (3dd) &#8211; not recommended</li>
<li>ArcScene Document (sxd) &#8211; not recommended</li>
<li>ArcReader Document (pmf) &#8211; not recommended</li>
</ol>
</li>
<li>Web mapping applications
<ol>
<li>ArcGIS API for Javascript, Flex or Silverlight</li>
<li>Java Web Application Development Framework</li>
<li>.Net Web Application Development Framework</li>
</ol>
</li>
<li>Mobile applications
<ol>
<li>ArcGIS Apple iPhone</li>
<li>ArcGIS Windows Mobile</li>
</ol>
</li>
<li>Tools
<ol>
<li>ArcGIS Server &#8211; Geocoding, Network Analyst, Geoprocessing or Geodata Service</li>
</ol>
</li>
</ol>
<p>All in all, this looks tremendously useful and a great resource for developers and students alike. Jack Dangermond seems to be leading ESRI to the new world of GIS wonderfully, creating something closer to a web GIS than anyone else has thus far.</p>
Note: There is a rating embedded within this post, please visit this post to rate it.


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2010/03/arcgis-com-now-online/' rel='bookmark' title='Permanent Link: ArcGIS.com now online'>ArcGIS.com now online</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/05/arcgis-com-now-online-as-a-public-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Essential Python Modules for GIS</title>
		<link>http://michalisavraam.org/2010/04/the-essential-python-modules-for-gis/</link>
		<comments>http://michalisavraam.org/2010/04/the-essential-python-modules-for-gis/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 00:41:45 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[GIS* Points]]></category>
		<category><![CDATA[Python Points]]></category>
		<category><![CDATA[gdal]]></category>
		<category><![CDATA[gdal/ogr]]></category>
		<category><![CDATA[geoprocessing]]></category>
		<category><![CDATA[networkx]]></category>
		<category><![CDATA[numpy]]></category>
		<category><![CDATA[ogr]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python gis]]></category>
		<category><![CDATA[python modules]]></category>
		<category><![CDATA[xlrd]]></category>
		<category><![CDATA[xlwt]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=304</guid>
		<description><![CDATA[With ESRI&#8217;s use of Python as their scripting language and the proliferation of open source GIS, Python became one of the required languages for GIS developers and hobbyists alike. What makes Python powerful is well documented throughout the web, but I want to highlight one very important aspects of Python today: Python Modules. Python Modules [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2009/06/manipulating-excel-files-using-python-part-1-reading-files/' rel='bookmark' title='Permanent Link: Manipulating Excel files using Python part 1: Reading Excel Files'>Manipulating Excel files using Python part 1: Reading Excel Files</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>With ESRI&#8217;s use of Python as their scripting language and the proliferation of open source GIS, Python became one of the required languages for GIS developers and hobbyists alike. What makes Python powerful is <a href="http://www.stanford.edu/~pgbovine/python-teaching.htm">well documented</a> <a href="http://www.python.org/about/quotes/">throughout</a> <a href="http://www.vni.com/company/whitepapers/html/AnalyticModelinginPython.php">the</a> <a href="http://webhelp.esri.com/arcgisdesktop/9.1/body.cfm?tocVisable=1&amp;ID=1925&amp;TopicName=An%20overview%20of%20writing%20geoprocessing%20scripts">web</a>, but I want to highlight one very important aspects of Python today: Python Modules.</p>
<p>Python Modules are code someone else has written and distributed, in order to make life easier for the rest of us. You may be familiar with the <a href="http://docs.python.org/modindex.html">standard modules that come with Python</a>, like math or datetime, but there are numerous more resources out there for the GIS minded developers. I will be discussing some of the modules I find essential in my work apart from the famous ArcGISScripting module by ESRI: GDAL, numpy, NetworkX, xlrd and xlwt. Let&#8217;s dive in!<span id="more-304"></span></p>
<h3>GDAL &#8211; Geospatial Data Abstraction Layer</h3>
<p>It will come a time in every GIS Professional&#8217;s career when they will need to quickly access information from a random shapefile they have, but do not have access to any GIS software or geoprocessing functionality (think of a laptop on the road, a remote machine not running Windows, etc). GDAL comes to the rescue, providing us such functionalities.</p>
<p>GDAL is a translator library with Python bindings that allows access to raster data using a unified abstract layer. Bundled with it is OGR, which provides similar functionality for vector data. <a href="http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries">Download it here</a>.</p>
<p>A quick example of using GDAL:</p>
<pre class="brush: python;">
import gdal
from gdalconst import *
# Open the raster dataset
dataset = gdal.Open(filename, GA_ReadOnly)
# Print the projection of the data
print dataset.GetProjection()
</pre>
<p>Using OGR:</p>
<pre class="brush: python;">
import ogr
# Get the driver
driver = ogr.GetDriverByName('ESRI Shapefile')
# Open a shapefile
dataset = driver.Open(shapefileName, 0)
</pre>
<h3>numpy &#8211; Numerical Python</h3>
<p>I cannot think of any GIS practitioner that did not have to manipulate raster data in a peculiar way, only finding that the software at hand doesn&#8217;t allow you to perform many customized functions. If one can interpret raster data (which GDAL above helps us with), then one can use them in Python as a matrix (algebraic matrix). numpy is the best Python package out there for this sort of situation.</p>
<p>numpy is a package that enables n-dimensional array manipulation in Python, as essential part of any scientific endeavor. It also provides linear algebra functionalities, Fourier transforms and random number generators. <a href="http://www.scipy.org/Download">Get it here</a>.</p>
<p>An example of the use of numpy:</p>
<pre class="brush: python;">
from numpy import *
# Sample IO Table data
ioSample = [[1,2], [3,4]]
# Turn into a numpy array
ioMatrix = array(ioSample)
# Find the inverse of ioMatrix
ioMatrixInv = linalg.inv(ioMatrix)
</pre>
<h3>NetworkX &#8211; Complex Networks Analysis</h3>
<p>While most GIS software out there provides the ability to build networks, sometimes it is easier to build networks quickly and dirty, without having to involve complex GIS software. An analysis of participation by space in an experiment can easily be achieved using the simple, yet powerful NetworkX module.</p>
<p>NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. It is hosted by the Los Alamos National Laboratory, and sees active development (presumably sponsored somehow by Los Alamos). <a href="http://networkx.lanl.gov/download.html">Download it here</a>.</p>
<p>A quick sample is shown below:</p>
<pre class="brush: python;">
import networkx as nx
# Create a graph
g = nx.Graph()
# Populate the graph
g.add_node(1)
g.add_node(2)
g.add_node(3)
# Create edges
g.add_edge(1,2)
g.add_edge(1,3)
# Print the neighbors of node 1 (returns 2)
print g.neighbors(1)
</pre>
<h3>xlrd &#8211; Excel™ File Reader</h3>
<p>All GIS practitioners have been sent &#8220;GIS data&#8221; in an Excel file, either a geocoding result or GPS waypoints, or anything similar. While ideally whoever sent the data would be educated on why it is a bad idea, most often we have to deal with the data without any additional help. xlrd comes into play, allowing you to read the said Excel formatted data into Python with little effort.</p>
<p>xlrd is a Python module that allows one to read Excel files without the need of Microsoft Excel or Windows. It provides access to XLS files for Microsoft Office 2003 or earlier. <a href="http://www.lexicon.net/sjmachin/xlrd.htm">Download it here</a>.</p>
<p>A quick example that will read an XLS file and print it to screen:</p>
<pre class="brush: python;">
import xlrd
# Open the Excel file
book = xlrd.open_workbook(&quot;excelFile.xls&quot;)
# Read the first sheet in the Excel workbook
sheet = book.sheet_by_index(0)
# Read the first row from column A to E
rowValues = sheet.row_values(0, start_colx=0, end_colx=4)
# Print the row values
for value in rowValues:
    print value
</pre>
<h3>xlwt &#8211; Excel™ file writer</h3>
<p>Business requirements often want results in an Excel file, so some other person, in another department, can run some sort of analysis on the data. Building a distance matrix is fine, but Joe from accounting is using complicated Excel spreadsheets and does not want to bother with database connections or DBF files. This is a situation in which xlwt excels, writing data to an Excel spreadsheet without the need of Excel or manipulation by the mouse.</p>
<p>xlwt is a Python module that, similarly to xlrd mention above, allows for cross platform Excel file creation without the need of Microsoft Office. <a href="https://secure.simplistix.co.uk/svn/xlwt/trunk/">Download it here</a>.</p>
<p>An example follows:</p>
<pre class="brush: python;">
import xlwt
# Create a new workbook
book = xlwt.Workbook()
# Add a new sheet
sheet = book.add_sheet(&quot;My Sheet&quot;)
# Write the number 5 in the first row, first column
sheet.write(0, 0, 5)
# Save the file
book.save(&quot;myExcelFile.xls&quot;)
</pre>
</pre>
<p>These are my essential Python modules for GIS development. Notice I left quite a few behind, especially those relating to web-based GIS developments. Those will appear in another post in the future. But please, do share your thoughts on what Python modules are essential for your GIS work.</p>
Note: There is a rating embedded within this post, please visit this post to rate it.


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2009/06/manipulating-excel-files-using-python-part-1-reading-files/' rel='bookmark' title='Permanent Link: Manipulating Excel files using Python part 1: Reading Excel Files'>Manipulating Excel files using Python part 1: Reading Excel Files</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/04/the-essential-python-modules-for-gis/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ESRI Updating Website ahead of new release</title>
		<link>http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/</link>
		<comments>http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 00:29:49 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[arcgis.com]]></category>
		<category><![CDATA[esri support]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[web gis]]></category>
		<category><![CDATA[web help]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=299</guid>
		<description><![CDATA[The ESRI family of websites have been seeing a lot of new updates as of late. The screenshot on the right is of the support site that ESRI offers, which hadn&#8217;t changed in quite a while. Notice the changes, including the lack of links to the web help (which has proven so helpful in the [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2010/03/arcgis-com-now-online/' rel='bookmark' title='Permanent Link: ArcGIS.com now online'>ArcGIS.com now online</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_300" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/04/ESRI-Support.png"><img class="size-medium wp-image-300" title="The new ESRI Support website" src="http://michalisavraam.org/wp-content/uploads/2010/04/ESRI-Support-300x241.png" alt="The new ESRI Support website" width="300" height="241" /></a><p class="wp-caption-text">The new ESRI Support website</p></div>
<p>The ESRI family of websites have been seeing a lot of new updates as of late. The screenshot on the right is of <a href="http://support.esri.com/">the support site that ESRI offers</a>, which hadn&#8217;t changed in quite a while. Notice the changes, including the lack of links to the web help (which has proven so helpful in the past to show people help files), and no direct link to the forums prominent in the page (it is located on the left-hand side navigation bar). Instead, people are directed to the new <a href="http://resources.arcgis.com/">ESRI Resources site</a>, which appears to be the new organization of resources for ESRI products. It is nice to see ESRI trying to separate the official support requests from the support resources, even though I am not sure which design will be more useful to the majority of users.</p>
<div id="attachment_301" class="wp-caption alignright" style="width: 295px"><a href="http://michalisavraam.org/wp-content/uploads/2010/04/ArcGIS-Resource-Centers.png"><img class="size-medium wp-image-301" title="The new ArcGIS Resource Center" src="http://michalisavraam.org/wp-content/uploads/2010/04/ArcGIS-Resource-Centers-285x300.png" alt="The new ArcGIS Resource Center" width="285" height="300" /></a><p class="wp-caption-text">The new ArcGIS Resource Center</p></div>
<p>The new resources page, for those that did not notice it, is no longer on the esri.com domain, but rather moves to the arcgis.com domain we discussed in the previous post. In the meantime, arcgis.com is still under construction, which the &#8220;Coming soon&#8221; phrase over an oblique image of the earth. If anyone has any more insights to this, please do share them on the comments section below.</p>


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2010/03/arcgis-com-now-online/' rel='bookmark' title='Permanent Link: ArcGIS.com now online'>ArcGIS.com now online</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ESRI Mashup Challenge Winners Announced</title>
		<link>http://michalisavraam.org/2010/03/esri-mashup-challenge-winners-announced/</link>
		<comments>http://michalisavraam.org/2010/03/esri-mashup-challenge-winners-announced/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 18:36:09 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[geo-web]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[web mapping]]></category>
		<category><![CDATA[web maps]]></category>
		<category><![CDATA[winners]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=296</guid>
		<description><![CDATA[ESRI announced the winners of their 2010 Mashup Challenge. 1st place goes to Dave Bouwman and his executive compensation mashup available here. Second place winner was a social media mapper, that presents real time results from social media websites to a map (see it live here), which seems like a great time killer to me. [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/' rel='bookmark' title='Permanent Link: ESRI Updating Website ahead of new release'>ESRI Updating Website ahead of new release</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_297" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/03/Screen-shot-2010-03-29-at-11.29.10-AM.png"><img class="size-medium wp-image-297" title="Executive Compensation Mashup by Dave Bouman, winner of the 2010 ESRI Mashup Challenge" src="http://michalisavraam.org/wp-content/uploads/2010/03/Screen-shot-2010-03-29-at-11.29.10-AM-300x178.png" alt="Executive Compensation Mashup by Dave Bouman, winner of the 2010 ESRI Mashup Challenge" width="300" height="178" /></a><p class="wp-caption-text">Executive Compensation Mashup by Dave Bouman, winner of the 2010 ESRI Mashup Challenge</p></div>
<p><a href="http://www.esri.com/software/mapping_for_everyone/api/mashup.html">ESRI announced the winners</a> of their 2010 Mashup Challenge. 1st place goes to <a href="http://blog.davebouwman.com/">Dave Bouwman</a> and his executive compensation mashup available <a href="http://mashup.dtsagile.com/">here</a>.</p>
<p>Second place winner was a social media mapper, that presents real time results from social media websites to a map (<a href="http://www.dbmediastudio.com/samples/mashup/">see it live here</a>), which seems like a great time killer to me.</p>
<p>Congratulations to all the winners and applicants, and many thanks to ESRI for running this challenge and allowing people to be creative with their products.</p>


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/' rel='bookmark' title='Permanent Link: ESRI Updating Website ahead of new release'>ESRI Updating Website ahead of new release</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/03/esri-mashup-challenge-winners-announced/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArcGIS.com now online</title>
		<link>http://michalisavraam.org/2010/03/arcgis-com-now-online/</link>
		<comments>http://michalisavraam.org/2010/03/arcgis-com-now-online/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 00:58:46 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[Quick notes]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[arcgis.com]]></category>
		<category><![CDATA[arcgisonline]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=293</guid>
		<description><![CDATA[ArcGIS.com is now online, with a new look and design, and everyone&#8217;s favorite web phrase: &#8220;Coming Soon&#8230;&#8220;. A little bit of searching around the internet reveals some information from Vector1Media regarding a cloud-version of ArcGIS in collaboration with Amazon, providing on-the-go GIS functionality. This is a dramatic change from the previous functionality of the ArcGIS.com [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/' rel='bookmark' title='Permanent Link: ESRI Updating Website ahead of new release'>ESRI Updating Website ahead of new release</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_294" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/03/Screen-shot-2010-03-23-at-5.35.06-PM.png"><img class="size-medium wp-image-294" title="ArcGIS.com Online Screenshot" src="http://michalisavraam.org/wp-content/uploads/2010/03/Screen-shot-2010-03-23-at-5.35.06-PM-300x183.png" alt="ArcGIS.com Online Screenshot" width="300" height="183" /></a><p class="wp-caption-text">ArcGIS.com Online Screenshot from 03/23/10</p></div>
<p><a href="http://arcgis.com/">ArcGIS.com</a> is now online, with a new look and design, and everyone&#8217;s favorite web phrase: &#8220;<em>Coming Soon&#8230;</em>&#8220;. A little bit of searching around the internet reveals some information from <a href="http://vector1media.com/spatialsustain/arcgis-com-means-a-full-gis-on-the-cloud.html">Vector1Media</a> regarding a cloud-version of ArcGIS in collaboration with Amazon, providing on-the-go GIS functionality.</p>
<p>This is a dramatic change from the previous functionality of the ArcGIS.com domain, which redirected to the esri.com section about ArcGIS. The Internet Archive has a number of <a href="http://web.archive.org/web/*/http://arcgis.com">older snapshots available here</a>.</p>
<p>Note that the site is currently only available to ESRI employees, that may actually have to request access too. Curiously, the <a href="http://maps.arcgis.com/">http://maps.arcgis.com/</a> domain mentioned in this<a href="http://blogs.esri.com/Support/blogs/arcgisonline/archive/2010/02/18/arcgis-online-at-the-federal-user-conference.aspx"> ESRI Blog entry</a> redirects to the same page, even though the screenshots seem to differ. This of course will be different from <a href="http://www.arcgisonline.com/">ArcGIS Online</a>, which is available now in Beta.</p>


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2010/04/esri-updating-website-ahead-of-new-release/' rel='bookmark' title='Permanent Link: ESRI Updating Website ahead of new release'>ESRI Updating Website ahead of new release</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/03/arcgis-com-now-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is geoprocessing?</title>
		<link>http://michalisavraam.org/2010/03/what-is-geoprocessing/</link>
		<comments>http://michalisavraam.org/2010/03/what-is-geoprocessing/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 01:25:23 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[GIS* Points]]></category>
		<category><![CDATA[Python Geoprocessing]]></category>
		<category><![CDATA[Spatial Data]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[data manipulation]]></category>
		<category><![CDATA[geoprocessing]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=279</guid>
		<description><![CDATA[An interesting question came about a few days ago. While I have been discussing ESRI&#8217;s geoprocessor and how one can use it effectively, I failed to define what geoprocessing is,, either within the ESRI realm or the general  GIS realm. In short, geoprocessing is an operation performed on geographic (spatial) data. In other words, it [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/' rel='bookmark' title='Permanent Link: Understanding the Geoprocessor Programming Model part 1'>Understanding the Geoprocessor Programming Model part 1</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>An interesting question came about a few days ago. While I have been discussing ESRI&#8217;s geoprocessor and how one can use it effectively, I failed to define what geoprocessing is,, either within the ESRI realm or the general  GIS realm. In short, geoprocessing is an operation performed on geographic (spatial) data. In other words, it is when one uses data to perform some operations and receiving results. An example would be geocoding. The user provides spatial data (an address), which we geoprocess to identify the output (latitude and longitude). In the ArcGIS world, there are a few methods for geoprocessing:  running commands from the ArcToolbox, the Model Builder, the command line and Python scripting (the one I focus on mostly in this blog).<br />
<span id="more-279"></span><br />
<h2>The ArcToolbox</h2>
<div id="attachment_282" class="wp-caption alignright" style="width: 112px"><a href="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-3.png"><img class="size-medium wp-image-282 " title="The ArcToolbox of ArcGIS 9.3" src="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-3-146x300.png" alt="The ArcToolbox of ArcGIS 9.3" width="102" height="210" /></a><p class="wp-caption-text">The ArcToolbox of ArcGIS 9.3</p></div>
<p>The ArcToolbox is a collection of tools provided by ESRI that achieve a number of geoprocessing operations. They are logically organized in themes based on the functionality, and are available to use without any customization. These operations can be very powerful and achieve great results. As you can see from the image on the right, there is a number of tools available to you to use. Depending on the extensions you have installed, you will see some different results, but the Geocoding Tools we mentioned above are available with any kind of license. To use any of these geoprocessing tools, you simply double-click on its name, and a window will pop up asking you for the required inputs and outputs. Pay attention to all the options available to you, and make use of the help button to clarify what the operation does, and how it is achieved.</p>
<h2>The Model Builder</h2>
<div id="attachment_280" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-2.png"><img class="size-medium wp-image-280" title="The Model Builder Window" src="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-2-300x207.png" alt="The Model Builder Window" width="300" height="207" /></a><p class="wp-caption-text">The Model Builder Window</p></div>
<p>The Model Builder is a wonderful program written by ESRI that allows you to graphically define geoprocessing operations. Using a simple tool, a user can drag and drop operations and data on a canvas, and connect them with directional arrows (signifying direction of data). On the example on the right, we follow the Address Geocoding operation. There are three data inputs for the operation, including an address locator, address fields to be used, and finally the input table with the addresses. There is one more data element in the picture, the output feature, on the far right. Note that all data are represented by ovals. The operation, which is in the middle, receives data from all the arrows pointing to it, and returns data to the arrow pointing outwards. Notice that the operation is in a rectangular box rather than an oval, to distinguish it.</p>
<h2>The Command Line</h2>
<div id="attachment_283" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-4.png"><img class="size-medium wp-image-283" title="The Command Line Window" src="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-4-300x157.png" alt="The Command Line Window" width="300" height="157" /></a><p class="wp-caption-text">The Command Line Window</p></div>
<p>The command line window is one more way to achieve geoprocessing when one is using ArcGIS. The window simply allows one to type commands, an hit enter to execute them. Some users are more familiar with this interface, and like the speed of which you can type operations. Typing a few letters in the top box will give you a list of all commands starting with those letters. Pressing space will bring the tooltip shown in the top of the image on your right. As you can see, it tells you what the tool expects to run. In this case, it expects an input table (in_table), an address locator (address_locator), the address fields (in_address_fields) and where to save the output (output_feature). Optionally, you can set the out_relation_type (notice the curly braces this time).</p>
<h2>Python Scripting</h2>
<div id="attachment_284" class="wp-caption alignright" style="width: 310px"><a href="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-5.png"><img class="size-medium wp-image-284" title="Python Scripting Geocoding" src="http://michalisavraam.org/wp-content/uploads/2010/03/Picture-5-300x149.png" alt="Python Scripting Geocoding" width="300" height="149" /></a><p class="wp-caption-text">Python Scripting Geocoding</p></div>
<p>The perhaps most complex way to perform geocoding is done through Python scripting. The example on the right actually presents geoprocessing code. What happens when one uses Python Scripting to create geoprocessing operations is similar with the command line option talked about earlier, with some slight changes. Python scripting gives you the option to interact with the data deeper. What this means is that the user can now access an individual point by latitude and longitude. And since all vector spatial data are built from points, this means you have deep access to any spatial data using Python (to see more about Accessing Geometries using the Geoprocessor <a href="http://michalisavraam.org/2009/02/accessing-geometries-using-the-geoprocessor-updated/">click here</a>). Also, as Python is a general use scripting language, you can find reusable code by other users (in the form of modules) to achieve things like reading Excel files (<a href="http://michalisavraam.org/2009/06/manipulating-excel-files-using-python-part-1-reading-files/">click here</a> for an overview).</p>
<p>And that is what geoprocessing is. Operations that work on spatial data. In the ArcGIS realm, that means either using ArcToolbox, the Model Builder, the Command Line interface or creating your own Python Scripts to achieve your desired results.</p>
Note: There is a rating embedded within this post, please visit this post to rate it.


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/' rel='bookmark' title='Permanent Link: Understanding the Geoprocessor Programming Model part 1'>Understanding the Geoprocessor Programming Model part 1</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/03/what-is-geoprocessing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loading the Geoprocessor Safely</title>
		<link>http://michalisavraam.org/2010/02/loading-the-geoprocessor-safely/</link>
		<comments>http://michalisavraam.org/2010/02/loading-the-geoprocessor-safely/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 20:52:25 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[Python Geoprocessing]]></category>
		<category><![CDATA[Python Points]]></category>
		<category><![CDATA[arcgisscripting]]></category>
		<category><![CDATA[geoprocessing]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=275</guid>
		<description><![CDATA[Often times people write geoprocessing scripts that others try to incorporate in their work. This is done through modules or packages in Python. This is wonderful when one wishes to share their work, but it can also be bothersome if the module you are loading assumes that there is no geoprocessor loaded. This little script [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/' rel='bookmark' title='Permanent Link: Understanding the Geoprocessor Programming Model part 1'>Understanding the Geoprocessor Programming Model part 1</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Often times people write geoprocessing scripts that others try to incorporate in their work. This is done through modules or packages in Python. This is wonderful when one wishes to share their work, but it can also be bothersome if the module you are loading assumes that there is no geoprocessor loaded. This little script will help you safely load the geoprocessor object, either from an instantiation by the main program, or from scratch.</p>
<p><span id="more-275"></span>The method I use to load the geoprocessor, while verbose, ensures that if anyone loads the geoprocessor before they use any of my module functions, any of their settings remain intact. This is achieved as follows:</p>
<ol>
<li>Check if the <em>arcgisscripting</em> module was loaded.
<ol>
<li>If it was not loaded, obviously the geoprocessor is not instantiated. Import, instantiate and return.</li>
</ol>
</li>
<li>If the <em>arcgisscripting</em> module was loaded, check the variables the user created in the main program.
<ol>
<li>If a variable is found to be of type &#8216;<em>geoprocessor object</em>&#8216;, then return that object.</li>
</ol>
</li>
<li>If no variable is found of type &#8216;<em>geoprocessor object</em>&#8216;, create it and return it.</li>
</ol>
<p>The code can be found below. Please review and use as you wish. If you have any comments or questions about it, please leave a comment.</p>
<pre class="brush: python;">
&quot;&quot;&quot;
Loads the geoprocessor safely, ensuring that it is not loaded
twice (to avoid overwriting parameters).

Usage: load()

Returns: a geoprocessor object.

Note: Geoprocessor Version returned is 9.3

&quot;&quot;&quot;
import sys

def load(version=None):
    # Check if the arcgisscripting module was loaded
    if &quot;arcgisscripting&quot; not in sys.modules:
        # The arcgisscripting module was never loaded Try to load it.
        print &quot;arcgisscripting not loaded&quot;
        print &quot;Trying to load arcgisscripting&quot;
        try:
            import arcgisscripting
        except ImportError, errorDetail:
            sys.exit(&quot;Error loading arcgisscriping. Is ArcGIS installed?\n&quot; + errorDetail)
        # Try to create a geoprocessor instantiation
        print &quot;Trying to create the geoprocessor instance&quot;
        try:
            gp = arcgisscripting.create(9.3)
        except:
            sys.exit(&quot;Error creating geoprocessor object. Exiting\n&quot; + str(sys.exc_info()))
        # Return the geoprocessor instance
        print &quot;Done!&quot;
        return gp
    else:
        # arcgisscripting was loaded. Is the geoprocessor instantiated?
        print &quot;arcgisscripting was already loaded. Searching for geoprocessor...&quot;
        # Get the global variables
        globalVars = vars(sys.modules[&quot;__main__&quot;])
        for item, value in globalVars.iteritems():
            # Loop through global variables, ignore internals
            if not item.startswith(&quot;__&quot;):
                # Check the type of the variable
                if type(globalVars[item]).__name__ == 'geoprocessing object':
                    # If the variable is the geoprocessor, return it
                    print &quot;Found geoprocessor instance as&quot;, item
                    return globalVars[item]
        # If we are here, the module is loaded but no gp instantiated
        # Try to create a geoprocessor instantiation
        try:
            print &quot;arcgisscripting loaded but not instantiated. Instantiating now...&quot;
            gp = sys.modules[&quot;arcgisscripting&quot;].create(9.3)
        except:
            sys.exit(&quot;Error creating geoprocessor object. Exiting\n&quot; + str(sys.exc_info()))
        # Return the geoprocessor instance
        return gp
 </pre>
Note: There is a rating embedded within this post, please visit this post to rate it.


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/' rel='bookmark' title='Permanent Link: Understanding the Geoprocessor Programming Model part 1'>Understanding the Geoprocessor Programming Model part 1</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/02/loading-the-geoprocessor-safely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Google Maps Lab features</title>
		<link>http://michalisavraam.org/2010/02/new-google-maps-lab-features/</link>
		<comments>http://michalisavraam.org/2010/02/new-google-maps-lab-features/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 22:23:54 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[Quick notes]]></category>
		<category><![CDATA[Spatial Data]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[web mapping]]></category>
		<category><![CDATA[web maps]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=264</guid>
		<description><![CDATA[Google Maps introduces some nifty new features for its users in the form of Labs (as in their famous Gmail Labs). The new features are accessible on the toolbar on the top right of the screen, labeled as &#8220;New&#8221; (look like this: ). There are many features for all map geeks available, including Drag and [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/google-maps-api-now-supports-multiple-languages/' rel='bookmark' title='Permanent Link: Google Maps API now supports multiple languages'>Google Maps API now supports multiple languages</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://michalisavraam.org/wp-content/uploads/2010/02/Google-Maps.png"><img class="alignright size-full wp-image-265" title="Google Maps" src="http://michalisavraam.org/wp-content/uploads/2010/02/Google-Maps.png" alt="Google Maps" width="173" height="45" /></a>Google Maps introduces some nifty new features for its users in the form of Labs (as in their famous Gmail Labs). The new features are accessible on the toolbar on the top right of the screen, labeled as &#8220;New&#8221; (look like this: <a href="http://michalisavraam.org/wp-content/uploads/2010/02/Google-Maps-New.png"><img class="alignnone size-full wp-image-266" title="Google Maps New" src="http://michalisavraam.org/wp-content/uploads/2010/02/Google-Maps-New.png" alt="" width="48" height="19" /></a>). There are many features for all map geeks available, including Drag and Zoom (allows you to draw a rectangle on the screen to zoom in it), Aerial Imagery (a much finer resolution imagery than satellite), Rotation (rotates the map, making up South or East), and others. My favorite one is of course the option to introduce the Beta label to Google Maps, for those that suffer from nostalgia.</p>
<p><span id="more-264"></span></p>
<p>The image below shows how the labs features are presented:</p>
<p><a href="http://michalisavraam.org/wp-content/uploads/2010/02/Google-Maps-Labs.png"><img class="aligncenter size-full wp-image-267" title="Google Maps Labs" src="http://michalisavraam.org/wp-content/uploads/2010/02/Google-Maps-Labs.png" alt="" width="685" height="536" /></a></p>


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/google-maps-api-now-supports-multiple-languages/' rel='bookmark' title='Permanent Link: Google Maps API now supports multiple languages'>Google Maps API now supports multiple languages</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/02/new-google-maps-lab-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 wishes for the new Geoprocessor</title>
		<link>http://michalisavraam.org/2010/02/7-wishes-for-the-new-geoprocessor/</link>
		<comments>http://michalisavraam.org/2010/02/7-wishes-for-the-new-geoprocessor/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 01:33:05 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[Python Geoprocessing]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[arcgisscripting]]></category>
		<category><![CDATA[geoprocessing]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=259</guid>
		<description><![CDATA[With the new version of ArcGIS coming out soon (9.4, now 10, tomorrow maybe X), it is nice to revisit the things I would love to see change in the geoprocessor. This is by no means a study on what is missing or what ESRI is doing wrong, but rather what I would like to [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/' rel='bookmark' title='Permanent Link: Understanding the Geoprocessor Programming Model part 1'>Understanding the Geoprocessor Programming Model part 1</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>With the new version of ArcGIS coming out soon (9.4, now 10, tomorrow maybe X), it is nice to revisit the things I would love to see change in the geoprocessor. This is by no means a study on what is missing or what ESRI is doing wrong, but rather what I would like to see in the future. If you have any suggestions, please do write a comment and I will gladly add them to the post (and attribute the addition to you).</p>
<p><span id="more-259"></span></p>
<table style="border: 2px solid #000000; width: 280px;" border="2" cellspacing="1" cellpadding="2" align="right">
<tbody>
<tr>
<td><strong>Wish</strong></td>
<td><strong>Likely</strong></td>
<td><strong>In v.</strong><strong>10?</strong></td>
</tr>
<tr>
<td>Free gp</td>
<td>No</td>
<td></td>
</tr>
<tr>
<td>Path traversal</td>
<td>Maybe</td>
<td></td>
</tr>
<tr>
<td>Expose numpy</td>
<td>No</td>
<td></td>
</tr>
<tr>
<td>Faster startup</td>
<td>Maybe</td>
<td></td>
</tr>
<tr>
<td>Desktop exposure</td>
<td>Yes</td>
<td>Hopefully</td>
</tr>
<tr>
<td>Multi-core</td>
<td>Yes</td>
<td>Hopefully</td>
</tr>
<tr>
<td>List returns</td>
<td>No</td>
<td></td>
</tr>
</tbody>
</table>
<ol>
<li><strong>A free geoprocessor</strong>: While this is unlikely to happen in the foreseeable future, there are elements of the geoprocessor that can be made freely available, either as a separate Python module or through a license check for parts of the objects. Specifically, I am referring to some of the List* methods (ListRasters(), ListFeatureClasses(), etc.) that do not require deep access to data (this would include ProductInfo(), validators, and hopefully even the Describe object). <em>Why would ESRI want to do this?</em> To ensure that limited functionality is available to everyone independent of cost. Why restrict people from seeing the power of the geoprocessor? Let them join the fun, and perhaps become customers too.</li>
<li><strong>Path traversal options</strong>: The List*() methods come in the list again, with a slight change. Since many users use directory structures to store data that are deep (subfolder within a subfolder within a folder), it would be nice if the geoprocessor could read through them all and return refernces to them based on the current folder. Before one jumps in to say that the Python os module can help, please remember that most users are not aware of os.walk, and trying to deal with ERI GRIDS (which are a folder themselves) presents a challenge even for experienced Python programmers. <em>Why would ESRI want to do this?</em> To make life easier for the majority of users out there with data in directory trees.</li>
<li><strong>Expose numpy in the geoprocessor</strong>: The geoprocessor as is right now (9.3.1) uses the excellent numpy module to perform matrix algebra (think of raster manipulation). Yet, when one wishes to run numpy commands, one needs to manually read raster files with GDAL, import them as numpy arrays (default), perform operations, and translate back to raster. ESRI must have modules for dealing with this, and we want them. <em>Why would ESRI want to do this?</em> Right now, raster manipulation through Python is done outside the geoprocessor. Most people turn to open source tools to manipulate data, which leads to less and less users relying on ESRI for this. Why pay when free software will do it? The capability is there, and we need to access it too.</li>
<li><strong>A faster starting geoprocessor</strong>: Right now, on my dual-core, 4GB RAM machine, creating the geoprocessing object takes a noticeably long time (in the orders of a few seconds). Why is that the case today? If the geoprocessor is written as C module, the bottleneck is somewhere else. Regardless, this needs to be address, especially for using an interactive shell or multiple parallel processes involving the geoprocessor. <em>Why would ESRI want to do this?</em> Simply because a faster startup time is time-saving and psychologically makes people feel better about the tools at hand.</li>
<li><strong>Multi-core aware geoprocessor</strong>: Right now, ESRI operates on one core per command (on the desktop). Similarly, the geoprocessor is a one-core operation. Yet many operations can run in parallel, and indeed, many people on the ESRI forums try endlessly to achieve multi-core operations. This is not easy of course, and not many people know how to do it. <em>Why would ESRI want to do this?</em> Increase in speed for one, but most importantly, to introduce a way to achieve this for everyone that wants it. Right now, there are as many solutions to this as there are people needing it. One simple and good way to achieve this would allow for unification of effort, and some good documentation be written.</li>
<li><strong>Exposure to the desktop application when run through it</strong>: If you remember the good old VBA days (which will not be included on any version after 10, beware), you could manipulate the application via scripting. You could add data to a map, reference the 3rd item on the table of contents, etc. We want a return to this regime, but this time with Python. <em>Why would ESRI want to do this?</em> Something will need to replace VBA, and what better language than the chosen one for geoprocessing scripting? Also, access to such functionality opens up development to a larger audience, which can help bolster the industry by itself.</li>
<li><strong>Make every method return a Python list for multiple data</strong>: The cursor methods in ArcGIS right now return an enumeration object. While this is understandable (ESRI doesn&#8217;t want people manipulating the order of items or inserting items in the middle of the list), it is not to the best interest of the geoprocessing model to return both enumeration objects and Python lists. At the very least, the enumeration object should have more Pythonic methods, like append() to add an element in the end or pop() to remove the last item. <em>Why would ESRI want to do this?</em> Consistency. There was an attempt to become more Pythonic in 9.3, so why not keep up with the theme and be more consistent at the same time?</li>
</ol>
<p>Do you have any suggestions to include in this list? Please leave a comment. Or if you think I am off my head and don&#8217;t know what I am talking about.</p>
Note: There is a rating embedded within this post, please visit this post to rate it.


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/' rel='bookmark' title='Permanent Link: Understanding the Geoprocessor Programming Model part 1'>Understanding the Geoprocessor Programming Model part 1</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/02/7-wishes-for-the-new-geoprocessor/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Understanding the Geoprocessor Programming Model part 3</title>
		<link>http://michalisavraam.org/2010/02/understanding-the-geoprocessor-programming-model-part-3/</link>
		<comments>http://michalisavraam.org/2010/02/understanding-the-geoprocessor-programming-model-part-3/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 01:47:02 +0000</pubDate>
		<dc:creator>Michalis Avraam</dc:creator>
				<category><![CDATA[GIS* Points]]></category>
		<category><![CDATA[Python Geoprocessing]]></category>
		<category><![CDATA[Python Points]]></category>
		<category><![CDATA[arcgisscripting]]></category>
		<category><![CDATA[describe]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[geoprocessing]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://michalisavraam.org/?p=229</guid>
		<description><![CDATA[After a long delay, it is time for the third installment of understanding the Geoprocessor Programming Model that will deal with the Describe object. If you missed the last two parts, feel free to look at them first (Part 1: understanding what the geoprocessor is, and Part 2: accessing data with the geoprocessor). As always, [...]


Related posts:<ol><li><a href='http://michalisavraam.org/2009/02/accessing-geometries-using-the-geoprocessor-updated/' rel='bookmark' title='Permanent Link: Accessing Geometries using the Geoprocessor (Updated)'>Accessing Geometries using the Geoprocessor (Updated)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>After a long delay, it is time for the third installment of understanding the Geoprocessor Programming Model that will deal with the Describe object. If you missed the last two parts, feel free to look at them first (<a href="http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part/">Part 1: understanding what the geoprocessor is</a>, and <a href="http://michalisavraam.org/2009/10/understanding-the-geoprocessor-programming-model-part-2/">Part 2: accessing data with the geoprocessor</a>). As always, comments are welcomed and encouraged.<span id="more-229"></span></p>
<div id="attachment_234" class="wp-caption alignright" style="width: 510px"><a href="http://michalisavraam.org/wp-content/uploads/2009/11/describe.png"><img class="size-full wp-image-234" title="The Describe Object" src="http://michalisavraam.org/wp-content/uploads/2009/11/describe.png" alt="The Describe Object" width="500" height="540" /></a><p class="wp-caption-text">The Describe Realm</p></div>
<p>As mentioned earlier, the geoprocessor gives us the ability to access or create data to perform various operations. These operation vary in type and content, but more often than not are performed on data we are not intimately familiar with. This can become a problem quite quickly, as we need to know the names of fields in the datasets, as well as other characteristics (the type of data we are dealing with, spatial references, geographical extent and other). The solution to this lack of knowledge comes through the <em>describe</em> object which provides users with methods to identify all unknown information beforehand. In the most basic form of usage, one uses the <em>describe</em> object on a dataset, accessing the bottom left box in the diagram, the <em>Describe Object Properties</em>. The Python code to achieve this follows:</p>
<pre class="brush: python;">
import arcgisscripting
# Import the module provided by ESRI

gp = arcgisscripting.create(9.3)
# Create the geoprocessor object

dataset = r&quot;c:\data\testData.shp&quot;
# The location of the data. This is usually
#   not hardcoded but discovered with List methods

dsc = gp.Describe(dataset)
# Create a describe object for the dataset

print dsc.DataType
# Print the data type of our dataset

print dsc.CatalogPath
# Print the path to the dataset
</pre>
<p>With the above simple example, we managed to read the Data Type and Catalog Path of a dataset. While this seems simple, it can become a very powerful tool, when on considers the possible return values (listed below).</p>
<table border="1" cellspacing="0" cellpadding="2" align="center">
<tbody>
<tr style="background-color: #dcdcdc;">
<td align="left"><strong>Return Value</strong></td>
<td align="left"><strong>Data Type</strong></td>
</tr>
<tr>
<td align="left">FeatureDataset</td>
<td align="left">Containers for data that include spatial reference and extent of contents.</td>
</tr>
<tr>
<td align="left">FeatureClass</td>
<td align="left">Feature class in a geodatabase, a shapefile if standalone.</td>
</tr>
<tr>
<td align="left">Table</td>
<td align="left">A geodatabase or standalone table.</td>
</tr>
<tr>
<td align="left">RelationshipClass</td>
<td align="left">A geodatabase class storing relationships.</td>
</tr>
<tr>
<td align="left">RasterDataset</td>
<td align="left">A raster dataset type.</td>
</tr>
<tr>
<td align="left">RasterBand</td>
<td align="left">A raster band.</td>
</tr>
<tr>
<td align="left">RasterCatalog</td>
<td align="left">A raster catalog.</td>
</tr>
<tr>
<td align="left">Workspace</td>
<td align="left">A workspace as defined by ESRI (directory or database).</td>
</tr>
</tbody>
</table>
<p>As you can see, the return values as listed above correspond to different objects in our diagram (the boxes in the first image above). This means that it would be trivial for us to move between the first access we have into the <em>Describe</em> realm (through the Describe object) and move to any other box of our choice when we are not familiar with what possible data we have.</p>
<h2>Retrieving Information about data: Feature Classes</h2>
<div id="attachment_236" class="wp-caption alignleft" style="width: 210px"><a href="http://michalisavraam.org/wp-content/uploads/2009/11/featureClass.png"><img class="size-full wp-image-236" title="FeatureClass Object Properties" src="http://michalisavraam.org/wp-content/uploads/2009/11/featureClass.png" alt="FeatureClass Object Properties" width="200" height="209" /></a><p class="wp-caption-text">FeatureClass Object Properties</p></div>
<p>The most commonly used types of data in GIS now seems to be feature classes, either standalone (in the form of shapefiles) or in a geodatabase. As such, we will use the example of a feature class to retrieve information about out data. This is of course not the only type of data one can use, so please refer to the image on the top for more information.</p>
<p>As you can see from the diagram on the left, feature classes have specific information associated with them, including what feature type they are of, their shape type, and the shape field name we used in part two of this series. We will dive right into it by trying to identify what shape type our feature class has, and what type of feature it is.</p>
<pre class="brush: python;">
import arcgisscripting
# Import the module provided by ESRI

gp = arcgisscripting.create(9.3)
# Create the geoprocessor object

dataset = r&quot;c:\data\testData.shp&quot;
# The location of the data. This is usually
#   not hardcoded but discovered with List methods

dsc = gp.Describe(dataset)
# Create a describe object for the dataset
# As we know the dataset is of type FeatureClass,
#   all the properties of the FeatureClass object
#   are available to us now.

print dsc.ShapeType
# Print what type of shape we have
#   (point, polygon, polyline, etc)

print dsc.FeatureType
# Print what type of features are stored
#   (simple, annotation, dimension, etc)
</pre>
<p>With the above code we can identify what type of shape we have and the type of feature stored. For possible values to these properties, please <a href="http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=FeatureClass_properties">check this help file</a>.</p>
<div id="attachment_237" class="wp-caption alignright" style="width: 210px"><a href="http://michalisavraam.org/wp-content/uploads/2009/11/table.png"><img class="size-full wp-image-237" title="Table Properties" src="http://michalisavraam.org/wp-content/uploads/2009/11/table.png" alt="Table Properties" width="200" height="108" /></a><p class="wp-caption-text">Table Properties</p></div>
<p>In the FeatureClass Properties object image above, on the bottom, you can see that there are also <em>Table Properties</em> and<em> Dataset Properties</em> listed. This means that when you have a feature class, you automatically gain access to those properties as well (as a feature class has them embedded). Therefore, we can use this to our advantage to further retrieve information about our feature class, like the name of all fields within the feature class. The example below shows you how to achieve this.</p>
<pre class="brush: python;">
import arcgisscripting
# Import the module provided by ESRI

gp = arcgisscripting.create(9.3)
# Create the geoprocessor object

data = r&quot;c:\data\testData.shp&quot;
# The location of the data. This is usually
#   not hardcoded but discovered with List methods

dsc = gp.Describe(data)
# Create a describe object for the data
# As we know the dataset is of type FeatureClass,
#   all the properties of the FeatureClass object
#   and inherited objects are available to us now.

dataFlds = dsc.Fields
# Retrieve a list of fields in the table of the
#   feature class as a Python list. Note the fields
#   are of Field Object type.

for fld in dataFields:
    print fld.Name
</pre>
<div id="attachment_235" class="wp-caption alignright" style="width: 210px"><a href="http://michalisavraam.org/wp-content/uploads/2009/11/dataset.png"><img class="size-full wp-image-235" title="Dataset Properties" src="http://michalisavraam.org/wp-content/uploads/2009/11/dataset.png" alt="Dataset Properties" width="200" height="118" /></a><p class="wp-caption-text">Dataset Properties</p></div>
<p>What he have done on the above example is run the ListFields() method mentioned in an older article (<a href="http://michalisavraam.org/2009/08/using-the-geoprocessors-list-methods/">Using the Geoprocessor&#8217;s List Methods</a>). Similarly, one can follow the Dataset Properties object (shown on your right) to access information like the extent of the data, or the spatial reference system. Don&#8217;t forget, both of those return an object, which has a corresponding box in the geoprocessor programming model diagram, so you need to treat them as such.</p>
<p>In this installment, I have shown you how one can use the <em>Describe</em> object the geoprocessor makes available to us to retrieve information about our data. While I did not provide complete examples of every single possible option available, hopefully by reading this post you are able to navigate your options better to achieve your goals.</p>
<p>As always, comments are encouraged and I am willing to answer any questions you may have.</p>
Note: There is a rating embedded within this post, please visit this post to rate it.


<p>Related posts:<ol><li><a href='http://michalisavraam.org/2009/02/accessing-geometries-using-the-geoprocessor-updated/' rel='bookmark' title='Permanent Link: Accessing Geometries using the Geoprocessor (Updated)'>Accessing Geometries using the Geoprocessor (Updated)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://michalisavraam.org/2010/02/understanding-the-geoprocessor-programming-model-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
