<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Re: [postgis-users] PostGIS and ADO.NET</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2800.1589" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>We've been using OpenLayers to display maps on the 
browser.  It's quickly becoming a very nice ajax-based map engine that can 
interface with a great many map sources.  We've mostly used it with KaMap, 
Mapserver, and shapefiles, but we've interfaced with WMS and WFS servers, as 
well.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>From a quick glance, it looks as if most of the 
interaction with the PostGIS database would be in the mapserver map file.  
Defining layers means defining queries, and all of it is invisible to the 
server-side C# code.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>We're currently looking at an system that basically 
uses a map as a monitoring tool.  The geometry would be fixed, but the 
attributes for each feature would change perhaps once a minute.  We'd 
thought that we might run a program on the server that would write GML files, 
and we'd have the OpenLayers GML layer type to display the map.  Looking at 
PostGIS, I'm thinking we might store the data in PostGIS, run a program on the 
server that would update the attributes, use MapServer to serve the data through 
WFS, use OpenLayers WFS layer type to display the map.  I'm assuming that 
the PostgresSQL ADO.NET drivers would be able to manipulate the attribute 
data.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>But we also have a need for users to edit features - to 
display lines, points, and polygons, to allow the users to manipulate these, and 
to save them - but not in the map data proper, but in a staging area where they 
can be evaluated and approved or rejected prior to being integrated into the 
map.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>Can we do this through WFS?  If so, we might not 
need to access the geometry from the web server code-behinds at 
all.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>Eventually, though, we're almost certain to run into a 
problem where we'll want to have server-side code manipulating geometry.  
</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>I'll look at SharpMap.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2><SPAN 
class=273195014-26042007>MapScript's C# DLL won't work - it has fundamental 
granularity problems.  The Mapscript DLL is non-reentrant, so the C# 
wrapper does locking to avoid conflicts, and the result works fine at low load 
levels, but doesn't scale.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2></FONT><BR> </DIV>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> 
  postgis-users-bounces@postgis.refractions.net 
  [mailto:postgis-users-bounces@postgis.refractions.net] <B>On Behalf Of 
  </B>Obe, Regina<BR><B>Sent:</B> Thursday, April 26, 2007 3:05 AM<BR><B>To:</B> 
  PostGIS Users Discussion<BR><B>Subject:</B> RE: [postgis-users] PostGIS and 
  ADO.NET<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV id=idOWAReplyText35042 dir=ltr>
  <DIV dir=ltr><FONT face=Arial color=#000000 size=2>Jeff,</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>Just wanted to add to what Abe was 
  saying.  Its not entirely true that you have to convert to byte array to 
  use except for updating data.</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>SharpMap and ZigGIS do that already for 
  you I think so you can just focus on writing the SQL statements.  Not 
  sure about NetTopologySuite.</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>It depends on what you are trying to do I 
  guess.  I've used PostGIS in .NET 2.0 and .NET 1.1. in a number of 
  ways.</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>1) With SharpMap - you may want to look 
  at the PostGIS driver they have developed to see how the byte array type thing 
  that Abe mentioned is done.  There's is a native driver so only piggy 
  backs on the Npgsql PostgreSQL .NET driver.  I have a quick example on my 
  site on how to use it.  Although it might have changed since I wrote 
  it</FONT></DIV>
  <DIV dir=ltr><A 
  href="http://www.bostongis.com/?content_name=postgis_sharpmap_tut01">http://www.bostongis.com/?content_name=postgis_sharpmap_tut01</A></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>2) Using Mapserver Mapscript - you 
  can play with layers directly from Vb.NET or C#.  Paolo has a nice 
  tutorial on how this is done.    </FONT></DIV>
  <DIV dir=ltr><A 
  href="http://www.paolocorti.net/public/wordpress/index.php/2006/09/20/mapserver-tutorial-for-c-mapscript-asp-net/">http://www.paolocorti.net/public/wordpress/index.php/2006/09/20/mapserver-tutorial-for-c-mapscript-asp-net/</A></DIV>
  <DIV dir=ltr><FONT color=#0000ff size=2></FONT> </DIV>
  <DIV dir=ltr>3)</DIV>
  <DIV dir=ltr>Note Paolo also has some nice tutorials on using 
  ZigGIS.  ZigGIS is strictly an ArcGIS driver so you can only use it in 
  conjunction with ArcGIS.</DIV>
  <DIV dir=ltr><A 
  href="http://www.paolocorti.net/public/wordpress/index.php/2007/02/14/installing-ziggis-11-for-connecting-arcmap-to-postgis-layers/">http://www.paolocorti.net/public/wordpress/index.php/2007/02/14/installing-ziggis-11-for-connecting-arcmap-to-postgis-layers/</A></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>4)  Mapserver CGI where I have 
  Mapserver query PostGIS and provide a WMS, WFS interface and then query the 
  WMS, WFS interface using  OpenLayers which I then overlay with data from 
  Google Maps, Virtual Earth etc.  OpenLayers is a javascript api but has a 
  number of interfaces for various Map services.  I personally think its 
  pretty neat.  Unfortunately I don't have any really good tutorials on 
  this - I was going to write some up on the new Openlayers 2.4 tutorial (which 
  I think supports updating data via WFS-T interfaces, a KML driver, a GML 
  driver)  and setting up Mapserver as a WFS, WMS service.  But sadly 
  I've been swamped so haven't had a chance to write these down.  Long on 
  ideas - short on time.</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>Here is just a general OpenLayers 
  tutorial</FONT></DIV>
  <DIV dir=ltr><A 
  href="http://www.bostongis.com/?content_name=openlayers_tut_01">http://www.bostongis.com/?content_name=openlayers_tut_01</A></DIV>
  <DIV dir=ltr><FONT color=#0000ff size=2></FONT> </DIV>
  <DIV dir=ltr><A 
  href="http://www.openlayers.org">http://www.openlayers.org</A>  the 
  download file has some handy examples as well.</DIV>
  <DIV dir=ltr><FONT color=#0000ff size=2></FONT> </DIV>
  <DIV dir=ltr>5) You can publish PostGIS data with Geoserver (along with other 
  datasources by the way) as well to provide a WMS, WFS, 
  WFS-T interface and then query or update data with that with 
  anything that supports those interfaces.  I haven't done that, but I know 
  MassGIS publishes their ArcSDE data using Geoserver and if you want to update 
  data via WFS-T may be something to take a look at. GeoServer I think uses java 
  servlets so may not be an option for you if you are a strictly .NET/Windows 
  shop.</DIV>
  <DIV dir=ltr><A 
  href="http://www.geoserver.org">http://www.geoserver.org</A></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>6) Then PostGIS has functions such as 
  AsGML, AsKML, AsSVG which you can use to render these kind of formats that can 
  then be used in such things as GoogleEarth or other interfaces that support 
  these.  I was going to write up some examples on this too in how to use 
  this in .NET and PHP but - yah time is non-existent at the 
  moment.</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2>Hope that helps,</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2>Regina</FONT></DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
  <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV></DIV>
  <DIV dir=ltr><BR>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> 
  postgis-users-bounces@postgis.refractions.net on behalf of Abe 
  Gillespie<BR><B>Sent:</B> Wed 4/25/2007 6:52 PM<BR><B>To:</B> PostGIS Users 
  Discussion<BR><B>Subject:</B> Re: [postgis-users] PostGIS and 
  ADO.NET<BR></FONT><BR></DIV>
  <DIV>
  <P><FONT size=2>Hello Jeff,<BR><BR>There is no *direct* support per se (at 
  least none that I know of).<BR>But you can use Npgsql as the ADO.NET data 
  access driver and retrieve<BR>the shape data as byte arrays.  To get 
  instantiated shape objects<BR>you'll then have to feed the byte array into 
  libraries such as<BR>NetTopolgySuite (<A 
  href="http://nts.sourceforge.net/">http://nts.sourceforge.net/</A>), 
  SharpMap<BR>(<A 
  href="http://www.codeplex.com/SharpMap/">http://www.codeplex.com/SharpMap/</A>), 
  or consume the byte arrays<BR>directly in your code as is done in 
  zigGIS<BR>(<A 
  href="http://code.google.com/p/ziggis/">http://code.google.com/p/ziggis/</A>).<BR><BR>You'll 
  have to write your SQL spatial queries by hand.  But I suspect<BR>you'll 
  want to do this anyway.<BR><BR>Good luck!<BR><BR>--<BR>Abe Gillespie, 
  abe@digital-pulp.com<BR>Programmer for hire - GIS, Business Apps, Website 
  Apps<BR><A 
  href="http://code.google.com/p/ziggis/">http://code.google.com/p/ziggis/</A><BR><BR>On 
  4/25/07, Jeff Dege <jdege@korterra.com> wrote:<BR>> I've done some 
  web browsing, trying to find current information on how<BR>> well PostGIS 
  integrates with ADO.NET, and while I've found a number of<BR>> discussions, 
  none really seemed to answer.<BR>><BR>> Are there current ADO.NET 2.0 
  drivers for PostGIS?  Are there current<BR>> drivers for 
  PostSQL?  If only the latter exist, how does that limit what<BR>> I 
  can do with PostGIS?<BR>><BR>> 
  _______________________________________________<BR>> postgis-users mailing 
  list<BR>> postgis-users@postgis.refractions.net<BR>> <A 
  href="http://postgis.refractions.net/mailman/listinfo/postgis-users">http://postgis.refractions.net/mailman/listinfo/postgis-users</A><BR>><BR>_______________________________________________<BR>postgis-users 
  mailing list<BR>postgis-users@postgis.refractions.net<BR><A 
  href="http://postgis.refractions.net/mailman/listinfo/postgis-users">http://postgis.refractions.net/mailman/listinfo/postgis-users</A><BR></FONT></P></DIV>
  <P>
  <HR SIZE=1>

  <P></P>
  <P><STRONG>The substance of this message, including any attachments, may be 
  confidential, legally privileged and/or exempt from disclosure pursuant to 
  Massachusetts law. It is intended solely for the addressee. If you received 
  this in error, please contact the sender and delete the material from any 
  computer. </STRONG></P></BLOCKQUOTE></BODY></HTML>