<?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>GIS, UNIGIS und andere Kleinigkeiten &#187; ESRI</title>
	<atom:link href="http://blog.peterschaer.ch/tag/esri/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.peterschaer.ch</link>
	<description>Jupiter and beyond the Infinite</description>
	<lastBuildDate>Wed, 12 Oct 2011 16:50:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ESRI Developer Summit</title>
		<link>http://blog.peterschaer.ch/2010/03/29/esri-developer-summit/</link>
		<comments>http://blog.peterschaer.ch/2010/03/29/esri-developer-summit/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 11:57:12 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[devsummit]]></category>
		<category><![CDATA[summit]]></category>

		<guid isPermaLink="false">http://blog.peterschaer.ch/?p=283</guid>
		<description><![CDATA[<p>Einer der interessantesten ESRI-Events aus meiner Sicht ist jeweils der Developer Summit, werden da doch jeweils die Features der neuen Software-Versionen nicht nur auf ein zwei Folien sondern auch im (technischen) Detail vorgestellt. Dadurch ergibt sich eine recht gute Einschätzung darüber, ob ein neues Feature wirklich einen Zusatznutzen bringt und sich der Umstieg auf eine [...]]]></description>
			<content:encoded><![CDATA[<p>Einer der interessantesten ESRI-Events aus meiner Sicht ist jeweils der <a href="http://www.esri.com/events/devsummit/">Developer Summit</a>, werden da doch jeweils die Features der neuen Software-Versionen nicht nur auf ein zwei Folien sondern auch im (technischen) Detail vorgestellt. Dadurch ergibt sich eine recht gute Einschätzung darüber, ob ein neues Feature wirklich einen Zusatznutzen bringt und sich der Umstieg auf eine neuen ArcGIS-Version lohnt. Mittlerweile geht das auch ohne, dass man in Palm Springs anwesend sein muss. Eine Vielzahl an Konferenzteilnehmern haben über ihre Eindrücke per <a href="http://twitter.com/search?q=%23devsummit">Twitter</a> undBlogs berichtet. ESRI stellt ausserdem viele Videos und Präsentationen sehr schnell ins Netz.</p>
<p>Dieses Jahr hat sich natürlich alles um das bevorstehende ArcGIS 10 gedreht. Es hat sich auch gezeigt, dass die Umbenennung von ArcGIS 10 auf 9.4 doch berechtigt war. Es ändert sich doch so einiges.</p>
<p><span style="text-decoration: underline;">ArcGIS Server</span></p>
<p>Obwohl angekündigt wurde, dass eigentlich 9.3.1 das Server-Release war, gibt es doch auch im Server-Bereich einige sehr interessante Neuerungen:</p>
<ul>
<li>neue Versionen (2.0) aller Web APIs (Flex, Javascript, Silverlight) mit vielen neuen Möglichkeiten.</li>
<li>Über die REST API kann neu auch editiert werden (Feature Layers). Das ist ein wichtiger Fortschritt. Noch nicht sicher bin ich, auf welchem Lizenzlevel dieses Editieren verfügbar sein wird.</li>
<li>In der REST API sind nun auch Informationen über Legenden und Symbologie verfügbar.</li>
<li>Die SOAP und die REST API können über eigene Mechanismen erweitert werden.</li>
<li>ein neuer Extract Service, mit dem Geodaten extrahiert, in das passende Format umgewandelt und auch gleich gezippt werden können.</li>
<li>Im WMS-Bereich werden nun alle SLD-Funktionen unterstützt, v.a. auch der Befehl GetLegendGraphic.</li>
</ul>
<p>Aufgefallen ist mir die Tatsache, dass praktisch nichts über das Web ADF zu hören war. Ich gehe davon aus, dass ESRI die Zukunft im Server-Bereich eher bei den neuen Web APIs sieht, als beim Web ADF. Ich habe das Gefühl, dass das Web ADF etwas auf dem Abstellgleis steht.</p>
<p>Was auch erwähnt wurde, ist die Tatsache, dass der Server auch in ArcGIS 10 kein 64bit-Produkt sein wird. ESRI hat jedoch bestätigt, dass an einer solchen Version entwickelt wird (<em>development project</em>). Es besteht also Hoffnung.</p>
<p><span style="text-decoration: underline;">ArcGIS Mobile</span></p>
<p>Hier ist sehr vieles im Umbruch. Bisher basierte ArcGIS Mobile auf Windows Mobile. Das wird sich ändern. ESRI wird neu auch aktuelle Plattformen wie iPhone, Android oder Windows Phone 7 unterstützen. Als erste Plattform startet das iPhone. Hier bietet ESRI eine out of the box-App (via Apples App Store) sowie ein SDK zur Entwicklung eigener Applikationen. Die weiteren Plattformen folgen später.</p>
<p><span style="text-decoration: underline;">ArcGIS Desktop</span></p>
<p>Hier sind die interessantesten Neuerungen zu finden:</p>
<ul>
<li>überarbeitete GUI, d.h. dockable windows (die sich verschieben lassen, ohne dass die Karte refreshed wird), ArcCatalog als dockable window in ArcMap etc.</li>
<li>die Python-Integration wurde komplett überabeitet. Das Python-Fenster in ArcMap ist nun mit Intellisense (automat. Befehlsvervollständigung sowie Online-Hilfe) ausgestattet. Geoprocessing-Befehle (Scripts, Models oder Tools) können nun im Hintergrund ablaufen, so dass der Anwender weiterarbeiten kann. Und mit arcpy.mapping wird eine der bislang grössten Limitationen von ArcGIS beseitigt: das Manipulieren von MXD-Dokumenten. Bisher ging das nur mit ArcObjects und war sehr mühsam. Neu können MXDs (inkl. Inhalte wie Layer, Tables, Layout-Elemente etc.) angesprochen und manipuliert werden. Es wird also möglich sein, die Datenquellen von Layern automatisiert ändern zu lassen. Das ist eine sehr wichtige Hilfe gerade in Migrations-Szenarien. Da jedoch Python auch weiterhin kein ArcObjects-Ersatz sein soll (coarse grained), gibt es auch hier noch einige mehr oder weniger bedauernswerte Lücken. So können Layer-Einstellungen wie Symbologie oder Massstabsbereiche (scale dependent rendering) nicht manipuliert werden. Nichtsdestotrotz ist arcpy.mapping ein grosser Schritt nach vorne.</li>
<li>Es gibt eine neue Art von Erweiterungen: die Add-Ins. Diese können in .NET oder Java (später vielleicht auch in Python) programmiert werden. Die Erweiterung können wie bisher die gesamte Bandbreite der ArcObjects nutzen. Die Installation ist vereinfacht worden. Die Add-Ins bestehen aus einer einzigen Datei (eine gezippte Datei), die nur ins richtige Verzeichnis kopiert werden kann. ArcGIS überwacht dieses Verzeichnis und lädt bei Bedarf die Applikation. Es sind somit für die Installation keinerlei Adminrechte mehr oder Einträge in die Registry mehr nötig. Das Add-In-Verzeichnis kann auf dem lokalen Filesystem aber auch auf einem Netzwerk-Laufwerk sein. In letzterem Falle übernimmt dieses Netzwerklaufwerk sozusagen die Software-Verteilung.</li>
</ul>
<p><span style="text-decoration: underline;">Geodatabase</span></p>
<p>Auch die Geodatabase wird nicht verschont:</p>
<ul>
<li>Query Layers sind Tabellen in einer Datenbank, die einen spatial type kennt (Oracle Spatial, PostGIS, SQL Server). Solche räumliche Tabellen können in ArcGIS angezeigt werden, ohne dass ArcSDE installiert und lizenziert werden muss!</li>
<li>Für den Zugriff auf die File Geodatabase von ausserhalb von ArcGIS wird es eine API geben. Diese ist C++-basiert und unterstützt nur Simple Features also nicht den gesamten Geodatabase-Umfang. Das dürfte also noch nicht der erwartete Shapefile-Ersatz werden.</li>
<li>Für Rasterdaten gibt es ein neues Mosaic Dataset, das eine Kreuzung zwischen Rasterkatalog und Mosaik mit Cache-ähnlicher Performance sein soll. Da bin ich gespannt, ob es die Performance-Versprechen einhalten kann.</li>
<li>Schlussendlich erhält die Geodatabase in ArcSDE ein <a href="http://blog.peterschaer.ch/2010/03/16/anderungen-im-geodatabase-schema-fur-arcsde-10/">neues, einfacheres Schema</a>.</li>
</ul>
<p><span style="text-decoration: underline;">Cloud</span></p>
<p>Das buzz word schlechthin war die Cloud. Was auch immer darunter verstanden wird, ESRI bewegt sich stark in diese Richtung. Dies belegen drei neue Angebote von ESRI:</p>
<ul>
<li>Für ArcGIS Server wird es demnächst auch vorgefertigte Images (AMI) für Amazons Wolkendienst EC2 geben. Zuerst für Besitzer eines Enterprise License Agreement (ELA) und danach auch für alle Anwender (inkl. stundenbasierter Abrechnung).</li>
<li>ArcGIS Explorer wird es neu auch als Browser-Anwendung geben auf Basis von Silverlight. Und das ganze auch noch kostenfrei. Damit wird ein recht brauchbarer, vorkonfigurierter Webviewer auf den Markt treten, gegen den bestehende Produkte antreten müssen.</li>
<li>ESRI baut ein neues Portal namens ArcGIS.com auf, das es erlaubt, Karten, Dienste und Applikationen hochzuladen und mit anderen Anwendern zu teilen. Da fehlt eigentlich nicht mehr viel bis zu einem <a href="http://twitter.com/ESRI_Ireland/statuses/10932306822">GDI-Portal</a>.</li>
</ul>
<p><span style="text-decoration: underline;">Fazit</span></p>
<p>ArcGIS 10 ist wohl zu Recht ein Major Release. Die vielen interessanten Neuerungen dürften einen Umstieg wohl rechtfertigen. Der Releasetermin ist der Juni (vor der ESRI User Conference). Bereits diese Woche (1. April) soll ein Prerelease erscheinen. Ich bin gespannt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2010/03/29/esri-developer-summit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSW-Dienst bei Geocat.ch</title>
		<link>http://blog.peterschaer.ch/2010/03/22/csw-dienst-bei-geocat-ch/</link>
		<comments>http://blog.peterschaer.ch/2010/03/22/csw-dienst-bei-geocat-ch/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:18:18 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[csw]]></category>
		<category><![CDATA[Geocat]]></category>
		<category><![CDATA[geonetwork]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[Metadaten]]></category>

		<guid isPermaLink="false">http://blog.peterschaer.ch/?p=271</guid>
		<description><![CDATA[<p>Letzte Woche habe ich im RSS-Feed von Geocat.ch die Metadaten zum CSW-Dienst von Geocat.ch entdeckt. Das wollte ich doch gleich mal ausprobieren. Da in ArcGIS defaultmässig kein CSW-Dienst eingebaut ist (schade!), musste ich den CSW-Client von der ESRI-Homepage runterladen und installieren (ArcGIS Server Geoportal Extension 9.3.1 CSW Clients Update). Das ging problemlos (Anleitungen gibt&#8217;s hier [...]]]></description>
			<content:encoded><![CDATA[<p>Letzte Woche habe ich im <a href="http://www.geocat.ch/geonetwork/srv/deu/rss.latest?georss=simplepoint">RSS-Feed</a> von <a href="http://www.geocat.ch">Geocat.ch</a> die <a href="http://www.geocat.ch/geonetwork/srv/eng/metadata.show?uuid=7efa4b9c-0f82-4541-8c07-326baf4ed219">Metadaten zum CSW-Dienst</a> von Geocat.ch entdeckt. Das wollte ich doch gleich mal ausprobieren. Da in ArcGIS defaultmässig kein CSW-Dienst eingebaut ist (schade!), musste ich den CSW-Client von der ESRI-Homepage runterladen und installieren (<a href="http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.viewPatch&amp;PID=148&amp;MetaID=1553">ArcGIS Server Geoportal Extension 9.3.1 CSW Clients Update</a>). Das ging problemlos (Anleitungen gibt&#8217;s <a href="http://webhelp.esri.com/geoportal_extension/9.3.1/index.htm#ext_csw_clnts.htm">hier</a> und <a href="http://www.ticheler.net/node/19">hier</a>). Ich konnte anschliessend im vorkonfigurierten US-Portal suchen. Danach habe ich die Geocat-URL eingetragen und das Profil <em>GeoNetwork CSW 2.0.2 APISO</em> ausgewählt. Das ganze funktioniert jedoch nicht. Ich erhalte regelmässig eine Fehlermeldung (<em>The server committed a protocol version. Section=ResponseStatusLine</em>):</p>
<p><a href="http://blog.peterschaer.ch/wp-content/uploads/csw_error.jpg"><img class="alignnone size-full wp-image-278" title="Fehler des ArcGIS CSW-Clients" src="http://blog.peterschaer.ch/wp-content/uploads/csw_error.jpg" alt="" width="420" height="119" /></a></p>
<p>Eine Protokollier-Aktion mit <a href="http://www.fiddler2.com/fiddler2/">Fiddler</a> im HTTP-Verkehr hat folgendes ergeben. Auf den GetCapabilites-Request erhalte ich das GetCapabilities-Dokument zurück. Der Client nimmt sich dann die dort definierte URL für den GetRecords-Befehl (http://www.geocat.ch/geonetwork/srv/en/csw) und schickt den POST-Request dorthin. Als Antwort erhält er jedoch den HTTP-Status 302, d.h. eine Umleitung (moved temporarily) auf eine andere Adresse (http://www.geocat.ch/geonetwork/srv/eng/csw). Der Client holt sich diese neue Adresse und schickt einen Request dorthin, jedoch keinen korrekten (ohne Parameter), so dass es zu einem Fehler kommt. Entweder der Client kann nicht korrekt mit dem Redirect umgehen oder mit den Geocat-URLs stimmt etwas nicht. Das Fiddler-Log habe ich mal hier angehängt:</p>
<p><a href="http://blog.peterschaer.ch/wp-content/uploads/fiddler_protokoll.txt">fiddler_protokoll</a></p>
<p>Hat jemand den CSW-Dienst von Geocat schon erfolgreich testen können?</p>
<p>[Update]: Ich habe noch etwas weitergetestet (u.a. mit handgemachten Requests). Der Dienst hat tadellos funktioniert. Der Fehler liegt somit wohl beim ArcGIS-Client, der nicht korrekt mit dem Redirect umgehen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2010/03/22/csw-dienst-bei-geocat-ch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Änderungen im Geodatabase-Schema für ArcSDE 10</title>
		<link>http://blog.peterschaer.ch/2010/03/16/anderungen-im-geodatabase-schema-fur-arcsde-10/</link>
		<comments>http://blog.peterschaer.ch/2010/03/16/anderungen-im-geodatabase-schema-fur-arcsde-10/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 17:47:52 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[geodatabase]]></category>
		<category><![CDATA[schema]]></category>
		<category><![CDATA[sde]]></category>

		<guid isPermaLink="false">http://blog.peterschaer.ch/?p=262</guid>
		<description><![CDATA[<p>Heute ist im &#8220;Inside the Geodatabase&#8221;-Blog von ESRI ein Artikel über die Änderungen im Geodatabase-Schema erschienen, die für ArcSDE 10 vorgesehen sind. Betroffen sind die GDB_*-Tabellen einer ArcSDE-Installation nicht jedoch die SDE_*-Tabellen. In Zukunft gibt es anstelle der Vielzahl an GDB_*-Tabellen nur noch ganze vier Tabellen. Das mag einige Vorteile bringen (da bin ich gespannt [...]]]></description>
			<content:encoded><![CDATA[<p>Heute ist im <a href="http://blogs.esri.com/Dev/blogs/geodatabase/default.aspx">&#8220;Inside the Geodatabase&#8221;-Blog</a> von ESRI ein <a href="http://blogs.esri.com/Dev/blogs/geodatabase/archive/2010/03/15/The-Simplified-Geodatabase-Schema-in-ArcGIS-10.aspx">Artikel über die Änderungen im Geodatabase-Schema</a> erschienen, die für ArcSDE 10 vorgesehen sind. Betroffen sind die GDB_*-Tabellen einer ArcSDE-Installation nicht jedoch die SDE_*-Tabellen. In Zukunft gibt es anstelle der Vielzahl an GDB_*-Tabellen nur noch ganze vier Tabellen. Das mag einige Vorteile bringen (da bin ich gespannt auf den Developer Summit von nächster Woche), es hat aber auch einen markanten Nachteil. Die mit ArcGIS 9.2 SP5 eingeführte Aufwärtskompatibilität zwischen ArcGIS und ArcSDE wird wieder verworfen. Bisher war es ja möglich &#8211; sei es mit Direct Connect, sei es mit SDE-Connect &#8211; z.B. mit einem ArcGIS Desktop 9.2 auf eine ArcSDE-Datenbank 9.3.1 zuzugreifen. Auf eine ArcSDE 10-Geodatabase kann laut diesem Artikel nur mit ArcGIS 10 zugegriffen werden und nicht mehr mit früheren Versionen! Konkret heisst das, dass die Datenbank erst dann auf Version 10 angehoben werden kann, wenn der allerletzte Client ArcGIS 10 installiert hat. Das kann gerade in grossen und heterogenen Umgebungen (&gt; 400 ArcGIS Desktop-Installationen in meinem Fall) ein zu grosses Hindernis sein, weil oft aus technischen aber auch organisatorischen Gründen ein ArcGIS-Releasewechsel nicht einfach in ein paar Wochen durchgezogen werden kann, sondern dafür Monate &#8211; wenn nicht sogar mehr &#8211; benötigt werden.</p>
<p>Ich bin über diese Ankündigung doch ziemlich enttäuscht. Ich hätte von ESRI erwartet, dass die mit ArcGIS 9.2 eingeführte Aufwärtskompatibilität beibehalten wird. Diese Pflicht zu identischen Software-Versionen auf der Datenbank und auf Client-Seite ist sehr störend und bei anderen Software-Systemen auch nicht unbedingt üblich. ESRI, bitte nachbessern!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2010/03/16/anderungen-im-geodatabase-schema-fur-arcsde-10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ArcGIS Server 9.3.1 auf Windows Server 2008 R2</title>
		<link>http://blog.peterschaer.ch/2010/03/11/arcgis-server-9-3-1-auf-windows-server-2008-r2/</link>
		<comments>http://blog.peterschaer.ch/2010/03/11/arcgis-server-9-3-1-auf-windows-server-2008-r2/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 06:56:33 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[ESRI]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[ArcGIS]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.peterschaer.ch/?p=245</guid>
		<description><![CDATA[<p>Heute morgen habe ich es zwitschern gehört, dass ArcGIS Server 9.3.1 von ESRI nun auch auf Windows Server 2008 R2 freigegeben wurde. Und siehe da: der entsprechende Eintrag findet sich auch auf der System Requirements-Seite.:</p>
<p></p>
<p>Das ist an und für sich eine sehr erfreuliche Entwicklung. Auffallend ist nur, dass ich vor gut einem Monat eine Anfrage [...]]]></description>
			<content:encoded><![CDATA[<p>Heute morgen habe ich es <a href="http://twitter.com/GISStauff/statuses/10293799936">zwitschern</a> gehört, dass ArcGIS Server 9.3.1 von ESRI nun auch auf Windows Server 2008 R2 freigegeben wurde. Und siehe da: der entsprechende Eintrag findet sich auch auf der <a href="http://wikis.esri.com/wiki/display/ag93bsr/ArcGIS+Server+Supported+Platforms">System Requirements</a>-Seite.:</p>
<p><a href="http://blog.peterschaer.ch/wp-content/uploads/r22.jpg"><img class="alignnone size-full wp-image-248" title="ArcGIS Server 9.3.1 for Windows Server 2008 R2" src="http://blog.peterschaer.ch/wp-content/uploads/r22.jpg" alt="" width="747" height="130" /></a></p>
<p>Das ist an und für sich eine sehr erfreuliche Entwicklung. Auffallend ist nur, dass ich vor gut einem Monat eine Anfrage zum genau gleichen Thema an den ESRI-Support gerichtet und die Antwort erhalten habe, dass Win2008 R2 erst mit ArcGIS Server 10 freigegeben wird und nicht mehr für 9.3.1! Ich würde mir in so einem Fall eine klarere Information von ESRI wünschen. Warum nicht z.B. auf der System Requirements-Seite vermerken, dass Win2008 R2 zurzeit geprüft wird und das Resultat noch offen lassen. So wäre zumindest klar, dass noch Abklärungen im Gange sind.</p>
<p>Wie auch immer: jetzt darf ich die frohe Kunde an unser Rechenzentrum weiterreichen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2010/03/11/arcgis-server-9-3-1-auf-windows-server-2008-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>News von der ESRI Federal User Conference</title>
		<link>http://blog.peterschaer.ch/2010/02/21/news-von-der-esri-federal-user-conference/</link>
		<comments>http://blog.peterschaer.ch/2010/02/21/news-von-der-esri-federal-user-conference/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 16:04:44 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[feduc]]></category>

		<guid isPermaLink="false">http://blog.peterschaer.ch/?p=229</guid>
		<description><![CDATA[<p>Diese Woche ist in den USA die ESRI Federal User Conference zu Ende gegangen. Das Mitverfolgen ist dank Twitter und Blogs jederzeit möglich, ohne selbst vor Ort zu sein. Die aus meiner Sicht interessantesten Infos in Kürze:</p>

ESRI hat eine Partnerschaft mit Amazon verkündet. Damit soll ArcGIS Server 10 auf der Elastic Cloud angeboten werden. Vorerst [...]]]></description>
			<content:encoded><![CDATA[<p>Diese Woche ist in den USA die <a href="http://www.esri.com/events/feduc/index.html">ESRI Federal User Conference</a> zu Ende gegangen. Das Mitverfolgen ist dank <a href="http://twitter.com/#search?q=%23FedUC">Twitter</a> und Blogs jederzeit möglich, ohne selbst vor Ort zu sein. Die aus meiner Sicht interessantesten Infos in Kürze:</p>
<ul>
<li>ESRI hat eine <a href="http://blogs.computerworld.com/15613/esri_to_offer_arcgis_in_amazons_cloud">Partnerschaft mit Amazon</a> verkündet. Damit soll ArcGIS Server 10 auf der Elastic Cloud angeboten werden. Vorerst aber nur für Kunden mit einem Enterprise License Agreement.</li>
<li>Es wurde erstmals die schon früher angekündigte iPhone-Applikation gezeigt. ArcGIS Server 10 wird einerseits eine vorkonfektionierte iPhone-Applikation anbieten (im AppStore) und andererseits eine spezielle API für iPhone. Das ist an und für sich recht spannend. Ich bin jedoch nicht mehr so überzeugt, ob es der richtige Weg ist, im mobilen Bereich nur Angebote für einzelne Plattformen (iPhone oder Windows Mobile) anzubieten und andere Plattformen aussen vor zu lassen. Es entwickelt ja zum Glück niemand Webapplikationen, die nur in bestimmten Browsern funktionieren. In der mobilen Welt sollte das nicht anders sein. <a href="http://www.quirksmode.org/blog/archives/2010/02/the_iphone_obse.html">Recht drastisch zusammengefasst</a> hat dieses Thema Peter-Paul Koch.</li>
<li>ArcGIS Explorer wird es in einer <a href="http://blogs.esri.com/Info/blogs/arcgisexplorerblog/archive/2010/02/18/new-releases-of-arcgis-explorer-and-arcgis-explorer-online-at-feduc.aspx">neuen Version</a> geben (Build 1200) und &#8212; das ist neu &#8212; auch als Webapplikation &#8220;<a href="http://blogs.esri.com/Info/blogs/arcgisexplorerblog/archive/2010/02/18/new-releases-of-arcgis-explorer-and-arcgis-explorer-online-at-feduc.aspx">ArcGIS Explorer online</a>&#8220;. Da bin ich wirklich gespannt, welche Funktionalität hier integriert ist. Das könnte eine sehr interessante und kostengünstige Alternative sogar zu ArcView werden. Der Wermutstropfen dabei: ArcGIS Explorer online ist eine <a href="http://silverlight.net/">Silverlight</a>-Applikation.</li>
<li>Was auch schon angekündigt war, ist nun präzisiert worden. Mit ArcGIS 10 wird es mit Python möglich sein, auch die bisher &#8220;unberührbaren&#8221; MXDs und LYR-Files zu verarbeiten. Davon erhoffe ich mir einen erheblich einfacheren Umgang mit ungültigen Datenquellen und ein sehr einfaches Auslesen von MXD-Informationen (welche Layer sind enthalten etc.). Das wäre ein Quantensprung.</li>
<li>Und last but not least: die Entwicklung von ArcGIS 10 soll <a href="http://twitter.com/cmcginty/status/9346734693">400 Millionen Dollar</a> gekostet haben! Wow! Kann das stimmen oder soll die Zahl die Lizenzkosten rechtfertigen <img src='http://blog.peterschaer.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>Wer mehr Informationen sucht, findet diese in den Konferenz-Videos bei <a href="http://www.esri.com/events/feduc/index.html">ESRI</a>. Schon sehr gespannt bin ich auf den <a href="http://www.esri.com/events/devsummit/index.html">Developer Summit</a> (22.3. &#8211; 25.3.). Dort werden mit Sicherheit noch mehr Details zu ArcGIS 10 präsentiert werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2010/02/21/news-von-der-esri-federal-user-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JMeter mit ArcGIS Server</title>
		<link>http://blog.peterschaer.ch/2009/11/18/jmeter-mit-arcgis-server-2/</link>
		<comments>http://blog.peterschaer.ch/2009/11/18/jmeter-mit-arcgis-server-2/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 16:50:02 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[ArcGISServer]]></category>
		<category><![CDATA[ESRI]]></category>

		<guid isPermaLink="false">http://www.peterschaer.ch/blog/?p=105</guid>
		<description><![CDATA[<p>Das Thema Performance darf beim ArcGIS Server nicht unterschätzt werden. Doch wie misst man Performance? Es gibt von ESRI zwar einige Hilfstools wie MXDPerfStat, das Geodatabase Toolset oder die Map Service Publishing Toolbar. Damit kann man ziemlich gut die Performance einzelner MXDs optimieren und messen. Schwieriger umzusetzen sind grösser angelegte Lasttests (auf mehrere Dienste, mehrere Anwender [...]]]></description>
			<content:encoded><![CDATA[<p>Das Thema Performance darf beim <a href="http://resources.esri.com/arcgisserver/">ArcGIS Server</a> nicht unterschätzt werden. Doch wie misst man Performance? Es gibt von ESRI zwar einige Hilfstools wie <a href="http://arcscripts.esri.com/details.asp?dbid=15570">MXDPerfStat</a>, das <a href="http://www.esri.com/software/arcgis/extensions/gdbt/index.html">Geodatabase Toolset</a> oder die <a href="http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?id=546&#038;pid=545&#038;topicname=Publishing_optimized_map_services">Map Service Publishing Toolbar</a>. Damit kann man ziemlich gut die Performance einzelner MXDs optimieren und messen. Schwieriger umzusetzen sind grösser angelegte Lasttests (auf mehrere Dienste, mehrere Anwender etc.). ESRI hat hier keine Haus-Lösung anzubieten, das ist aber auch gar nicht nötig, da das Testen von Diensten und Webapplikationen nicht wirklich eine GIS-spezifische Anforderung ist. Deshalb kann hier auf bestehende Tools zurückgegriffen werden.</p>
<p>Eines der überzeugendsten Tools ist sicherlich <a href="http://jakarta.apache.org/jmeter/">JMeter</a>, ein Apache-Projekt. Damit können sehr ausgeklügelte und breit angelegte Performance-Tests (z.B. von mehreren Clients aus) gefahren werden. JMeter ist eine Java-Applikation, die somit auf fast jedem Desktop lauffähig ist. Die Dokumentation ist ziemlich gut, so dass hier auf weitere Worte verzichtet wird. Die beste Einstiegshilfe war das <a href="http://jakarta.apache.org/jmeter/usermanual/jmeter_proxy_step_by_step.pdf">Aufsetzen eines JMeter-Proxies</a>, mit dem ganze Sessions im Browser aufgezeichnet werden können. Diese Aufzeichnungen sind perfekte Vorlagen für das weitere Verfeinern eines Testplans. In Bezug auf ArcGIS Server bietet sich die REST-Schnittstelle als Test-Schnittstelle an, da hier alle Parameter einfach über URL-Parameter übertragen werden. Mit JMeter kann aber sicher auch die <a href="http://jakarta.apache.org/jmeter/usermanual/build-ws-test-plan.html">SOAP-Schnittstelle</a> angesteuert werden. Es kann aber auch eine auf ArcGIS Server aufbauende Applikation wie z.B. <a href="http://www.mysynergis.com/cms/front_content.php?idcat=158">WebOffice</a> angesprochen werden. Der erarbeitete Testplan kann gespeichert werden, damit ist garantiert, dass immer derselbe Test ausgeführt wird. Das erleichtert den Vergleich zu verschiedenen Zeiten. Mich hat JMeter überzeugt!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2009/11/18/jmeter-mit-arcgis-server-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eigene Geoprocessing-Tools mit ArcObjects Teil 7: Fazit</title>
		<link>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7-fazit/</link>
		<comments>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7-fazit/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 12:39:51 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[Geoprocessing]]></category>
		<category><![CDATA[NET]]></category>

		<guid isPermaLink="false">http://www.peterschaer.ch/blog/?p=119</guid>
		<description><![CDATA[<p>Die Bereitstellung von Funktionalität in Form von Geoprocessing-Tools hat einige gewichtige Vorteile:</p>

Der Programmierer muss für die gesuchte Funktionalität nicht auch noch eine eigene Oberfläche programmieren, sondern kann elegant auf die bestehende Geoprocessing-Umgebung zurückgreifen und sich auf die eigentliche Programmierarbeit konzentrieren.
Der Benutzer kann die Tools in der gewohnten Geoprocessing anwenden und nahtlos mit anderen Tools vermischen. [...]]]></description>
			<content:encoded><![CDATA[<p>Die Bereitstellung von Funktionalität in Form von Geoprocessing-Tools hat einige gewichtige Vorteile:</p>
<ul>
<li>Der Programmierer muss für die gesuchte Funktionalität nicht auch noch eine eigene Oberfläche programmieren, sondern kann elegant auf die bestehende Geoprocessing-Umgebung zurückgreifen und sich auf die eigentliche Programmierarbeit konzentrieren.</li>
<li>Der Benutzer kann die Tools in der gewohnten Geoprocessing anwenden und nahtlos mit anderen Tools vermischen. Auch können die Tools in Model Builder-Modellen oder Python-Skripten verwendet werden.</li>
<li>Die Validierung der Parameter geschieht automatisch und muss vom Programmierer nicht manuell codiert werden. Dies ist eine grosse Zeitersparnis.</li>
</ul>
<p>Natürlich sind auch einige Nachteile auszumachen und zwar vorwiegend im Bereich Dokumentation. ESRI hat diesem Thema meiner Meinung nach eher wenig Zeit und Dokumentation gewidmet. Es gibt auf <a href="http://edn.esri.com">EDN</a> dazu nur gerade einen Artikel (&#8220;<a href="http://edndoc.esri.com/arcobjects/9.2/NET/e7d06ae9-a6d1-4248-a7a3-9d5f375f088c.htm">Building a custom geoprocessing function tool</a>&#8220;) und ein eher mageres Code-Beispiel (&#8220;<a href="http://edndoc.esri.com/arcobjects/9.2/NET/914fc3ff-817b-4825-8f15-4df2d725c370.htm">GPCalculateArea</a>&#8220;). Zusätzlich dazu gibt es in den ESRI-Foren einen längeren Thread (&#8220;<a href="http://forums.esri.com/Thread.asp?c=93&#038;f=983&#038;t=132713">Programmatically Creating Toolboxes</a>&#8220;) zum Thema. Das Fehlen etwas ausführlicherer Dokumentation macht die Umsetzung dieses eigentlich sehr interessanten Ansatzes recht umständlich. Dies hat wahrscheinlich auch dazu geführt, dass in den ESRI-Foren oder auch sonst im Internet praktisch keine weiterführenden Informationen dazu zu finden sind. Hier würde ich mir von ESRI einen kleinen Dokumentationseffort wünschen (ausführlichere Dokumentation, mehr Beispiele). </p>
<p><strong>Übersicht:</strong><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-1.html"> Teil 1 (Einführung)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-2.html"> Teil 2 (Implementierung von IGPFunctionFactory)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-3.html"> Teil 3 (Implementierung von IGPFunction)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4.html"> Teil 4 (Implementierung von IGPFunction:ParameterInfo)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5.html"> Teil 5 (Implementierung von IGPFunction:Validate)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6.html"> Teil 6 (Implementierung von IGPFunction:Execute)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7.html"> Teil 7 (Fazit)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7-fazit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eigene Geoprocessing-Tools mit ArcObjects Teil 6: IGPFunction.Execute</title>
		<link>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6-igpfunction-execute/</link>
		<comments>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6-igpfunction-execute/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 12:36:19 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[Geoprocessing]]></category>
		<category><![CDATA[NET]]></category>

		<guid isPermaLink="false">http://www.peterschaer.ch/blog/?p=120</guid>
		<description><![CDATA[<p>Hier wird nun das eigentliche Tool ausgeführt. Doch bevor dies möglich ist, müssen aus den eingegebenen Parametern gewöhnliche ArcObjects werden. Als erstes muss dazu noch einmal geprüft werden, ob die vom Benutzer übergebenen Parameter auch gültig sind. Dies geschieht durch einen Aufruf der Validate-Methode. Anschliessend wird für jeden Parameter aus der Eigenschaft Value der eigentlich [...]]]></description>
			<content:encoded><![CDATA[<p>Hier wird nun das eigentliche Tool ausgeführt. Doch bevor dies möglich ist, müssen aus den eingegebenen Parametern gewöhnliche ArcObjects werden. Als erstes muss dazu noch einmal geprüft werden, ob die vom Benutzer übergebenen Parameter auch gültig sind. Dies geschieht durch einen Aufruf der Validate-Methode. Anschliessend wird für jeden Parameter aus der Eigenschaft <strong>Value </strong>der eigentlich übergebene Wert geholt. Dieser muss jedoch zuerst entpackt werden:
<pre class="code">IGPParameter parameter = (IGPParameter)paramvalues.get_Element(0);IGPValue parameterValue = GPUtils.UnpackGPValue(parameter);</pre>
<p>Danach kann der Parameter je nach Typ in das richtige ArcObject umgewandelt werden. Dazu sind die zahlreichen Funktionen der Hilfsklasse <a href="http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriGeoprocessing/IGPUtilities.htm">IGPUtilities</a> nützlich. Ist der Parameter z.B. eine Feature Class, dann wird die Methode DecodeFeatureLayer benötigt:
<pre>IFeatureClass featureClass;</pre>
<pre>IQueryFilter queryFilter;</pre>
<pre>if (gpValue is IGPFeatureLayer) {</pre>
<pre>    GPUtils.DecodeFeatureLayer(gpValue, out featureClass, out queryFilter);</pre>
<pre>}</pre>
<p>Und schon hat man eine herkömmliche Feature Class sowie den dazugehörigen QueryFilter, der z.B. aus einer Definition Query stammt.</p>
<p>Ein genaues Studium der Methoden des IGPUtilites-Objekts lohnt sich, denn für praktisch jeden Parametertyp gibt es eine passende Funktion.</p>
<p>Hat man die Parameter in herkömmliche ArcObjects umgewandelt, kann die Funktionalität des Tools wie gewohnt programmiert und ausgeführt werden. Hier stehen einem dann alle Möglichkeiten in der riesigen ArcObjects-Welt offen.</p>
<p><strong>Übersicht:</strong><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-1.html"> Teil 1 (Einführung)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-2.html"> Teil 2 (Implementierung von IGPFunctionFactory)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-3.html"> Teil 3 (Implementierung von IGPFunction)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4.html"> Teil 4 (Implementierung von IGPFunction:ParameterInfo)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5.html"> Teil 5 (Implementierung von IGPFunction:Validate)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6.html"> Teil 6 (Implementierung von IGPFunction:Execute)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7.html"> Teil 7 (Fazit)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6-igpfunction-execute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eigene Geoprocessing-Tools mit ArcObjects Teil 5: IGPFunction.Validate</title>
		<link>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5-igpfunction-validate/</link>
		<comments>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5-igpfunction-validate/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 12:31:50 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[Geoprocessing]]></category>
		<category><![CDATA[NET]]></category>

		<guid isPermaLink="false">http://www.peterschaer.ch/blog/?p=121</guid>
		<description><![CDATA[<p>Die in der ParameterInfo gemachten Parameter-Definitionen sind schön und gut, nützen aber nichts, wenn nicht auch geprüft wird, ob sie eingehalten werden. D.h. ob der Benutzer gültige Parameter angegeben hat. Genau dies geschieht in der Validate-Methode. Glücklicherweise muss nicht jeder Parameter einzeln geprüft werden. In der Hilfsklasse IGPUtilities gibt es die Methode InternalValidate, die genau [...]]]></description>
			<content:encoded><![CDATA[<p>Die in der ParameterInfo gemachten Parameter-Definitionen sind schön und gut, nützen aber nichts, wenn nicht auch geprüft wird, ob sie eingehalten werden. D.h. ob der Benutzer gültige Parameter angegeben hat. Genau dies geschieht in der Validate-Methode. Glücklicherweise muss nicht jeder Parameter einzeln geprüft werden. In der Hilfsklasse <a href="http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriGeoprocessing/IGPUtilities.htm">IGPUtilities</a> gibt es die Methode InternalValidate, die genau dies erledigt. Der Aufruf dieser Funktion bewirkt, dass alle vom Benutzer eingegebenen Parameter auf die Definitionen in ParameterInfo hin geprüft werden. Erfüllt ein Parameter diese Definition nicht, wird dem Benutzer automatisch ein Warnhinweis angezeigt. Es wird auch geprüft, ob alle obligatorischen Parameter angegeben wurden und ob die angegebenen Parameter (z.B. Feature Classes) tatsächlich existieren.</p>
<p>Sind nun darüber hinaus spezielle Anforderungen betreffend Validierung nötig, die von InternalValidate nicht abgedeckt werden, können diese zusätzlichen Tests separat in der Validate-Methode durchgeführt werden. Sollte Kommunikation mit dem Benutzer notwendig sein, weil einer der Parameter ungültig ist, sollte dies nicht via MessageBox geschehen, sondern über das IGPMessages-Objekt. Die InternalValidate-Methode macht dies genauso. Damit werden dem Benutzer Fehlermeldungen und Warnhinweise konsistent in der GUI angezeigt.</p>
<p>Desweiteren muss in der Validate-Methode auch der in der ParameterInfo-Beschreibung erwähnte Spezialfall des Derived-Parameters berücksichtigt werden. Fügt ein Tool einer Feature Class ein Feld hinzu, dann ist der Output-Parameter eben vom Typ Derived. Dies dient einzig dem Zweck, dass im Model Builder dieses neue Feld bereits angezeigt wird, ohne dass es in Tat und Wahrheit schon existiert. Damit dies funktioniert muss in der Validate-Methode der Parameter d.h. die Feature Class geklont (mit dem <a href="http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esrisystem/IClone.htm">IClone</a>-Objekt) und dieser geklonten Feature Class das Feld hinzugefügt werden. Die geklonte Feature Class existiert nirgends in einer Datenbank oder in einem Verzeichnis sondern ausschliesslich im Speicher. Die geklonte und um das Feld ergänzte Feature Class wird anschliessend dem Parameter als Wert wieder eingespiesen. Nur so funktioniert ein Tool im Model Builder korrekt.</p>
<p><strong>Übersicht:</strong><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-1.html"> Teil 1 (Einführung)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-2.html"> Teil 2 (Implementierung von IGPFunctionFactory)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-3.html"> Teil 3 (Implementierung von IGPFunction)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4.html"> Teil 4 (Implementierung von IGPFunction:ParameterInfo)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5.html"> Teil 5 (Implementierung von IGPFunction:Validate)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6.html"> Teil 6 (Implementierung von IGPFunction:Execute)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7.html"> Teil 7 (Fazit)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5-igpfunction-validate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eigene Geoprocessing-Tools mit ArcObjects Teil 4: IGPFunction.ParameterInfo</title>
		<link>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4-igpfunction-parameterinfo/</link>
		<comments>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4-igpfunction-parameterinfo/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 12:28:39 +0000</pubDate>
		<dc:creator>Peter Schär</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[Geoprocessing]]></category>
		<category><![CDATA[NET]]></category>

		<guid isPermaLink="false">http://www.peterschaer.ch/blog/?p=122</guid>
		<description><![CDATA[<p>Die Eigenschaft ParameterInfo ist von zentraler Bedeutung. Sie beschreibt nämlich die einzelnen Input- und Output-Parameter des GP-Tools. Genauer gesagt enthält die Eigenschaft einen Array von IGPParameter-Objekten. Mit IGPParameter können alle möglichen Parameter von Feature Classes über Zahlen bis zu Mehrfach-Auswahllisten definiert werden.</p>
<p>Der Typ des Parameters wird hauptsächlich durch die Eigenschaft DataType definiert. Eine Liste aller [...]]]></description>
			<content:encoded><![CDATA[<p>Die Eigenschaft <strong>ParameterInfo</strong> ist von zentraler Bedeutung. Sie beschreibt nämlich die einzelnen Input- und Output-Parameter des GP-Tools. Genauer gesagt enthält die Eigenschaft einen Array von <a href="http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriGeoprocessing/IGPParameter.htm">IGPParameter</a>-Objekten. Mit IGPParameter können alle möglichen Parameter von Feature Classes über Zahlen bis zu Mehrfach-Auswahllisten definiert werden.</p>
<p>Der Typ des Parameters wird hauptsächlich durch die Eigenschaft <strong>DataType</strong> definiert. Eine Liste aller möglichen Parametertypen ist <a href="http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriGeoDatabase/IGPDataType.htm">hier</a> zu finden. Eine Besonderheit gilt es anzumerken: Soll der Parameter eine FeatureClass sein, hat man zwei Möglichkeiten: DEFeatureClassType oder GPFeatureLayerType. DEFeatureClassType meint immer die Feature Class so wie sie in der DB oder als Shapefile vorliegt. Mit GPFeatureLayerType ist zwar dieselbe Feature Class gemeint aber zusätzlich auch in Form eines FeatureLayers (in ArcMap). Es ist meistens sinnvoll, den DataType auf GPFeatureLayerType zu setzen, da damit auch eventuelle Definition Queries und Selections, die auf die Feature Class angewendet werden, berücksichtigt werden können. Bei DEFeatureClassType ist dies nicht möglich.</p>
<p>Zusätzlich kann der Parameter mit den Eigenschaften <strong>Name </strong>und <strong>DisplayName </strong>so beschrieben werden, dass der Benutzer begreift, was er hier eingeben muss.</p>
<p>Sehr wichtig ist daneben auch noch die Eigenschaft <strong>ParameterDependencies</strong>. Damit können Beziehungen/Abhängigkeiten zwischen verschiedene Parametern hergestellt werden. Wenn z.B. Parameter1 eine Feature Class ist und Parameter2 ein Feld (Attribut), dann wird durch die Abängigkeit dem Benutzer in der Geoprocessing-GUI für den Parameter2 automatisch eine Liste der Felder der Feature Class aus Parameter1 angezeigt, aus der er auswählen kann.</p>
<p>Ähnlich wichtig ist die Eigenschaft <strong>Domain</strong>. Damit kann der Parameter innerhalb des oben angegebenen DataTypes weiter eingegrenzt werden. Ist der DataType eine beliebige FeatureClass kann mit der Domain-Eigenschaft bestimmt werden, dass nur Feature Classes vom Typ Polygon akzeptiert werden. Oder: Ist der DataType eine Zahl, kann mit der Domain-Eigenschaft der gültige Wertebereich angegeben werden. Die Domain-Eigenschaft ist sehr wichtig und hilfreich, um falsche Benutzereingaben zu vermeiden.</p>
<p>Mit der Eigenschaft <strong>Value </strong>kann dem Parameter ein Default-Wert zugewiesen werden.</p>
<p>Da es sowohl Input- als auch Output-Parameter gibt, muss dies in der Parameter-Definition ebenfalls spezifiziert werden. Dies geschieht mit der <strong>Direction</strong>-Eigenschaft. Ein Input-Parameter ist ein Parameter, den das Tool als Ausgangswert benötigt. Ein Output-Parameter hingegen ist im Prinzip das Resultat des Tools. Entsteht als Ergebnis des Tools z.B. eine neue Feature Class, muss diese neue Feature Class als Output-Parameter definiert werden. Dies ist übrigens auch der Fall, wenn das Tool gar keine neue Feature Class erzeugt, sondern eine bestehende nur verändert (d.h. ein Feld hinzufügt). In diesem speziellen Fall wird der Parameter in der Eigenschaft Direction als Output-Parameter definiert und in der Eigenschaft <strong>ParameterType </strong>als Derived-Parameter. Dies ist notwendig, damit das Tool auch im Model Builder reibungslos funktioniert. Fügt ein Tool einer Feature Class ein Feld zu, dann muss dieses neue Feld im Model Builder angezeigt werden. Schliesslich ist es ja möglich, dass genau dieses Feld als Input-Parameter in einem weiteren Tool benötigt wird. Nur wenn dieses neue Feld als Derived markiert ist, taucht es im Model Builder auf. Auf den Gebrauch des Tools in der Toolbox oder in der Kommandozeile hat die Derived-Markierung keinen Einfluss.</p>
<p>Über die <strong>ParameterType</strong>-Eigenschaft wird ausserdem gesteuert, ob der Parameter optional oder obligatorisch ist.</p>
<p>Beispiel für einen Parameter, der eine Feature Class vom Typ SimpleJunction sein soll:
<pre>IGPParameterEdit gpParameter0 = new GPParameterClass();</pre>
<pre>gpParameter0.DataType = new GPFeatureLayerTypeClass();</pre>
<pre>IGPValue gpValue0 = new GPFeatureLayerClass();</pre>
<pre>gpParameter0.Value = gpValue0;</pre>
<pre>gpParameter0.Direction = esriGPParameterDirection.esriGPParameterDirectionInput;</pre>
<pre>gpParameter0.DisplayName = "Input-Layer";</pre>
<pre>gpParameter0.Enabled = true;</pre>
<pre>gpParameter0.Name = "inputLayer";</pre>
<pre>IGPFeatureClassDomain gpDomain0 = new GPFeatureClassDomainClass();</pre>
<pre>gpDomain0.AddFeatureType(esriFeatureType.esriFTSimpleJunction);</pre>
<pre>gpParameter0.Domain = (IGPDomain) gpDomain0;</pre>
<pre>gpParameter0.ParameterType = esriGPParameterType.esriGPParameterTypeRequired;</pre>
<p>Beispiel für einen Parameter vom Typ Feld. Das Feld soll einerseits ein Feld der oben ausgewählten Feature Class sein und andererseits vom Typ Double sein:
<pre>IGPParameterEdit gpParameter1 = new GPParameterClass();</pre>
<pre>gpParameter1.DataType = new FieldTypeClass();</pre>
<pre>IGPValue gpValue1 = new FieldClass();</pre>
<pre>gpParameter1.Value = gpValue1;</pre>
<pre>gpParameter1.Direction = esriGPParameterDirection.esriGPParameterDirectionInput;</pre>
<pre>gpParameter1.DisplayName = "Feld";</pre>
<pre>gpParameter1.Enabled = true;</pre>
<pre>gpParameter1.Name = "inputLayerFeld";</pre>
<pre>gpParameter1.AddDependency("inputLayer");</pre>
<pre>IGPFieldDomain gpDomain1 = new GPFieldDomainClass();</pre>
<pre>gpDomain1.AddType(esriFieldType.esriFieldTypeDouble);</pre>
<pre>gpParameter1.Domain = (IGPDomain) gpDomain1;</pre>
<pre>gpParameter1.ParameterType = esriGPParameterType.esriGPParameterTypeRequired;</pre>
<p><strong>Übersicht:</strong><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-1.html"> Teil 1 (Einführung)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-2.html"> Teil 2 (Implementierung von IGPFunctionFactory)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-3.html"> Teil 3 (Implementierung von IGPFunction)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4.html"> Teil 4 (Implementierung von IGPFunction:ParameterInfo)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-5.html"> Teil 5 (Implementierung von IGPFunction:Validate)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-6.html"> Teil 6 (Implementierung von IGPFunction:Execute)</a><br /><a href="http://schaer.freeflux.net/blog/archive/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-7.html"> Teil 7 (Fazit)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.peterschaer.ch/2007/08/08/eigene-geoprocessing-tools-mit-arcobjects-teil-4-igpfunction-parameterinfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

