Or do something ugly like use a .asmx to call your ogr2ogr cmdline as a Process:
using System; using System.Web.Services; using System.Text; using System.IO; using System.Diagnostics; using System.Threading; using System.Security.Permissions; [WebService(Namespace = "http://www.myserver.com/ShpView")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] [SecurityPermissionAttribute(SecurityAction.LinkDemand, Unrestricted = true)] public class RunTranslate : System.Web.Services.WebService { private static string basepath = "E:/ShpView/"; private static string pass = "pass"; private static string db = "DBname"; public RunTranslate () { } private delegate string StringDelegate(); [WebMethod] public string PostGISLoadCommand(string shp, string epsg) { string fileName = "E:/ShpView/ogr/bin/ogr2ogr"; string arguments = "-f PostgreSQL PG:\"user=user dbname="+db+" host=localhost password="+pass+" port=5432\" " + basepath + "/shpview/data/shape/" + shp + ".shp -a_srs \"" + epsg + "\" -overwrite"; return Run(fileName, arguments); } private static string Run(string fileName, string arguments) { string results = ""; string error = ""; Process cmdLineProcess = new Process(); using (cmdLineProcess) { cmdLineProcess.StartInfo.FileName = fileName; cmdLineProcess.StartInfo.Arguments = arguments; cmdLineProcess.StartInfo.UseShellExecute = false; cmdLineProcess.StartInfo.CreateNoWindow = true; cmdLineProcess.StartInfo.RedirectStandardOutput = true; cmdLineProcess.StartInfo.RedirectStandardError = true; if (cmdLineProcess.Start()) { StringDelegate outputStreamAsyncReader = new StringDelegate(cmdLineProcess.StandardOutput.ReadToEnd); StringDelegate errorStreamAsyncReader = new StringDelegate(cmdLineProcess.StandardError.ReadToEnd); IAsyncResult outAR = outputStreamAsyncReader.BeginInvoke(null, null); IAsyncResult errAR = errorStreamAsyncReader.BeginInvoke(null, null); if (Thread.CurrentThread.GetApartmentState() == ApartmentState.STA) { while (!(outAR.IsCompleted && errAR.IsCompleted)) { Thread.Sleep(10); } } else { WaitHandle[] arWaitHandles = new WaitHandle[2]; arWaitHandles[0] = outAR.AsyncWaitHandle; arWaitHandles[1] = errAR.AsyncWaitHandle; if (!WaitHandle.WaitAll(arWaitHandles)) { error = String.Format("Command line aborted: {0}", fileName); } } results = outputStreamAsyncReader.EndInvoke(outAR); error = errorStreamAsyncReader.EndInvoke(errAR); if (!cmdLineProcess.HasExited) { cmdLineProcess.WaitForExit(); } } else { error = String.Format("Could not start command line process: {0}", fileName); } cmdLineProcess.Close(); } return "Done: " + error + " " + results; } } From: gdal-dev-boun...@lists.osgeo.org [mailto:gdal-dev-boun...@lists.osgeo.org] On Behalf Of Tamas Szekeres Sent: Friday, March 27, 2009 3:39 AM To: Sune Dogan, LIFA A/S Cc: gdal-dev@lists.osgeo.org Subject: Re: [gdal-dev] ogr2ogr C# Hi, You'll have to re-implement the logic in ogr2ogr.cpp by using the ogr_csharp.dll. Refer to the following thread for more information: http://thread.gmane.org/gmane.comp.gis.gdal.devel/11789 Best regards, Tamas 2009/3/27 Sune Dogan, LIFA A/S <s...@lifa.dk> Hi Im developing a .NET C# project and need to convert from GML to ESRI Shape Simply i want to run this command: ogr2ogr -skipfailures -f "ESRI Shapefile" C:\shapefile.shp c:\gmlfile.gml which works fine from the FWTool Command tool. But i just want to do i in my application, can any one help me? Thanks :) _______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev