[postgis-users] PostGIS and ADO.NET
Obe, Regina
robe.dnd at cityofboston.gov
Thu Apr 26 10:37:43 PDT 2007
I believe that WFS-T spec which I think GeoServer supports is designed for transactional editing via WFS. Mapserver unfortunately does not support WFS-T to my knowledge.
I haven't played around with WFS-T so don't know much about it and am not too familar with many client apps that can use it directly except for uDig (which can edit PostGIS directly anyway I think but is a Java app) and OpenLayers which seems to support WFS-T but can't comment on how good that support is.
The PostGreSQL ADO.NET drivers can manipulate the attribute data easily. I do that all the time.
Are you looking for a web-based editor or a desktop editor?
If you are looking to have your users edit data from an ASP.NET page and have the ASP.NET page update the database, then one thought that comes to mind is to use the WKT driver in OpenLayers (don't know how robust it is, but looks like its designed to both read and edit WKT data)
http://trac.openlayers.org/browser/sandbox/tschaub/wkt/lib/OpenLayers/Format/WKT.js?rev=2902
http://trac.openlayers.org/browser/sandbox/tschaub/wkt/examples/wkt.html?rev=2902
Then you can use the AsText() function and GeomFromText() functions built into PostGIS to dish out WKT data and consume the WKT data. With that you can get by with just the npgsql ADO.NET driver for editing and dishing out selected regions, your mapserver/KaMap for heavy map rendering, and openLayers for bridging the gaps.
Hope that helps,
Regina
________________________________
From: postgis-users-bounces at postgis.refractions.net [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Jeff Dege
Sent: Thursday, April 26, 2007 11:24 AM
To: PostGIS Users Discussion
Subject: RE: [postgis-users] PostGIS and ADO.NET
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.
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.
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.
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.
Can we do this through WFS? If so, we might not need to access the geometry from the web server code-behinds at all.
Eventually, though, we're almost certain to run into a problem where we'll want to have server-side code manipulating geometry.
I'll look at SharpMap.
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.
________________________________
From: postgis-users-bounces at postgis.refractions.net [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Obe, Regina
Sent: Thursday, April 26, 2007 3:05 AM
To: PostGIS Users Discussion
Subject: RE: [postgis-users] PostGIS and ADO.NET
Jeff,
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.
SharpMap and ZigGIS do that already for you I think so you can just focus on writing the SQL statements. Not sure about NetTopologySuite.
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.
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
http://www.bostongis.com/?content_name=postgis_sharpmap_tut01
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.
http://www.paolocorti.net/public/wordpress/index.php/2006/09/20/mapserver-tutorial-for-c-mapscript-asp-net/
3)
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.
http://www.paolocorti.net/public/wordpress/index.php/2007/02/14/installing-ziggis-11-for-connecting-arcmap-to-postgis-layers/
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.
Here is just a general OpenLayers tutorial
http://www.bostongis.com/?content_name=openlayers_tut_01
http://www.openlayers.org the download file has some handy examples as well.
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.
http://www.geoserver.org
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.
Hope that helps,
Regina
________________________________
From: postgis-users-bounces at postgis.refractions.net on behalf of Abe Gillespie
Sent: Wed 4/25/2007 6:52 PM
To: PostGIS Users Discussion
Subject: Re: [postgis-users] PostGIS and ADO.NET
Hello Jeff,
There is no *direct* support per se (at least none that I know of).
But you can use Npgsql as the ADO.NET data access driver and retrieve
the shape data as byte arrays. To get instantiated shape objects
you'll then have to feed the byte array into libraries such as
NetTopolgySuite (http://nts.sourceforge.net/), SharpMap
(http://www.codeplex.com/SharpMap/), or consume the byte arrays
directly in your code as is done in zigGIS
(http://code.google.com/p/ziggis/).
You'll have to write your SQL spatial queries by hand. But I suspect
you'll want to do this anyway.
Good luck!
--
Abe Gillespie, abe at digital-pulp.com
Programmer for hire - GIS, Business Apps, Website Apps
http://code.google.com/p/ziggis/
On 4/25/07, Jeff Dege <jdege at korterra.com> wrote:
> I've done some web browsing, trying to find current information on how
> well PostGIS integrates with ADO.NET, and while I've found a number of
> discussions, none really seemed to answer.
>
> Are there current ADO.NET 2.0 drivers for PostGIS? Are there current
> drivers for PostSQL? If only the latter exist, how does that limit what
> I can do with PostGIS?
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
_______________________________________________
postgis-users mailing list
postgis-users at postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
________________________________
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.
-----------------------------------------
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20070426/0acfa99e/attachment.html>
More information about the postgis-users
mailing list