Hi Jackie, Hi all.

I come back on working to modify features online. I'm still on a big
problem: add a geometry on Postgis.

How have I work to achieve this goal?
I've read a lot of forum but all are talking about to develop code in C# or
in .NET. I'm using MGOS 2.2, with Apache/Tomcat (Java), with FDO version
3.5, PostgreSQL Provider.

I attach here my code. It works to add feature in SDF file, but I'm not able
to understand why it's no good for PostGIS.
I must add a row somewhere? I must import some ".dll" somewhere?

Thanks for any any help...

Code .jsp:

//I just import these pages:
<%@ page import="org.osgeo.mapguide.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.text.*" %>
<%@ page import="javax.servlet.jsp.*" %>
<%@ page import="javax.servlet.http.*" %>

//And this is the "try" code, that give me this error: "FDO exception. The
schema doesn't exist".

try {
        String sessionId = request.getParameter("SESSION");
    String mapName = request.getParameter("MAPNAME");
        String realpath = getServletContext().getRealPath("/");
    // Initialize web tier with the site configuration file.  The config
    // file should be in the same folder as this script.
    String configPath =  realpath + "webconfig.ini";
    MapGuideJavaApi.MgInitializeWebTier( configPath );

    // Get the user information using the session id,
    // and set up a connection to the site server.
    MgUserInformation userInfo = new MgUserInformation(sessionId);
    MgSiteConnection siteConnection = new MgSiteConnection();
    siteConnection.Open(userInfo);
        MgSite site = new MgSite();
        site.Open(userInfo);
  
    // Get an instance of the required service(s).
    MgResourceService
resourceService=(MgResourceService)siteConnection.CreateService(MgServiceType.ResourceService);
    MgFeatureService
featureService=(MgFeatureService)siteConnection.CreateService(MgServiceType.FeatureService);
        
        //A quanto pare specificando "siteConnection" per creare la mappa, dopo
posso usare "MgLayer.UpdateFeatures()": ma cosa cambia? Così come è cmq a me
funziona...
    MgMap map = new MgMap(siteConnection);
        map.Open(mapName);

        //Here I put the resource for my Postgis layer:
        MgResourceIdentifier fdo = new
MgResourceIdentifier("Library://prova_basic/Load_procedures/postgresql.FeatureSource");

        //This is the name of my layer based on Postgis table "public:points":
        String layername = "points";
        
        //Specify the property values
        MgPropertyCollection properties = new MgPropertyCollection();
        MgAgfReaderWriter agfWriter = new MgAgfReaderWriter();
        
        MgGeometryFactory geoFactory = new MgGeometryFactory();
        MgLinearRingCollection LinearRingCollection = new 
MgLinearRingCollection();
        MgCoordinateCollection coordcol = new MgCoordinateCollection();
        
                double x = Double.parseDouble(coods[0]);
                double y = Double.parseDouble(coods[1]);
                MgCoordinate coordinate = geoFactory.CreateCoordinateXY(x, y);
                coordcol.Add(coordinate);
                        
        MgPoint point = geoFactory.CreatePoint(coordinate);
        
        //Proviamo con queste righe prese dal forum salvato sul 
desktop...niente:
        MgWktReaderWriter wktReaderWriter = new MgWktReaderWriter();
        String pointstring = "POINT XY (" + Double.toString(x) + " " +
Double.toString(y) + ")";       
        MgGeometry geometry = (MgPoint) wktReaderWriter.Read(pointstring);
        MgByteReader geometryByteReader = agfWriter.Write(geometry);
        
        //The field "the_geom" is the geometry field of my postgis table, and
FeatId is mandatory:
        properties.Add(new MgGeometryProperty("the_geom", geometryByteReader));
        properties.Add(new MgInt32Property("FeatId", 25));

        MgInsertFeatures insertFeature1 = new MgInsertFeatures(layername,
properties);
        MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
        commands.Add(insertFeature1);
        //set_ResourceWriteAble(fdo, resourceService);

        layer.UpdateFeatures(commands);

        //I try also this way to update the feature but doesn't work:
        //featureService.MgUpdateFeatures(fdo, commands, false);
        
        layer.ForceRefresh();
        map.Save(resourceService);
}
catch (MgException e)
    {
      out.println("<p><strong>Error:</strong> ");
      out.println(e.GetDetails());
      out.println("</p>");
     System.out.println(e.GetDetails());
    }
-- 
View this message in context: 
http://osgeo-org.1803224.n2.nabble.com/Inserting-features-in-PostGIS-fails-tp1813557p5850790.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
_______________________________________________
mapguide-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapguide-users

Reply via email to