MapGuide OS with Google Earth
Jason Birch
Jason.Birch at nanaimo.ca
Mon Apr 10 12:36:36 EDT 2006
Hi,
Something that I've recently figured out is that it's a lot easier to
debug Mg errors if you wrap your code in Try/Catch. Have a look at some
of the code in the mapadmin area, or in the package command line
utilities I posted about yesterday.
I wonder if the geometry column for your data source is the same as the
sample data (SHPGEOM).
You can see what this is supposed to be by looking at a layer based on
that feature source in Studio, under "Feature Data Setup". You can also
get this information by going into the mapagent/index.html file,
clicking on Feature Service API in the upper left, then clicking on
Describe Feature item, and finally fill in the FeatureSource ID
Library://Bolsward/Data/Data/totaal_tvg32010101_v.FeatureSource
The sample data definition looks like this:
<xs:complexType name="HydrographicPolygonsType" abstract="false"
fdo:geometryName="SHPGEOM">
The fdo:geometryName attribute is what you want here.
A better solution would be to let the code extract the geometry
column... hmm... bit of research later:
You could replace this line:
$byteReader = $featureReader->GetGeometry('SHPGEOM');
With this:
$byteReader =
$featureReader->GetGeometry($featureReader->GetClassDefinition()->GetDef
aultGeometryPropertyName());
Note that this isn't very efficient; it checks the default geometry
property on each feature object. It would be better to do this outside
of the loop, or at the top of the loop in a section that's only executed
once.
Jason
________________________________
From: Willem Schwarte [mailto:willem at giskit.nl]
Sent: Monday, April 10, 2006 07:38
To: Jason Birch
Cc: users at mapguide.osgeo.org
Subject: RE: MapGuide OS with Google Earth
Hi,
I have tried your sample for Google Earth, and it work fine with the
sheybogan sample data.
If I paste this in my internet Explorer
http://localhost/sites/google_earth\water.php
<http://localhost/sites/google_earth/water.php> I will get a bunch of
coordinates.
But when I try to use my own data I get an error:
PHP Fatal error: Uncaught exception 'mgobjectnotfoundexception' in
Unknown on line 0
In the water.php file I change this line like so:
$featureReader = $featureService->SelectFeatures(new
MgResourceIdentifier("Library://Bolsward/Data/Data/totaal_tvg32010101_v.
FeatureSource"), "totaal_tvg32010101_v", null);
As you can see in XML below, this does exist. Do you might know why I
don't get anything ?
Thanks,
Willem
<ResourceId>Library://Bolsward/Data/Data/totaal_tvg32010101_v.FeatureSou
rce</ResourceId>
<Depth>4</Depth>
<Owner>Administrator</Owner>
<CreatedDate>2006-04-07T08:32:36Z</CreatedDate>
<ModifiedDate>2006-04-07T08:32:36Z</ModifiedDate>
-
<http://localhost/mapguide/mapagent/mapagent.fcgi?OPERATION=ENUMERATERES
OURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library%3A%2F%2F&TYPE=&DEPTH=-
1##> <ResourceDocumentHeader
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ResourceDocumentHeader-1.0.0.xsd">
-
<http://localhost/mapguide/mapagent/mapagent.fcgi?OPERATION=ENUMERATERES
OURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library%3A%2F%2F&TYPE=&DEPTH=-
1##> <General>
<IconName>FeatureSourceSdf</IconName>
</General>
-
<http://localhost/mapguide/mapagent/mapagent.fcgi?OPERATION=ENUMERATERES
OURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library%3A%2F%2F&TYPE=&DEPTH=-
1##> <Security
xsi:noNamespaceSchemaLocation="ResourceSecurity-1.0.0.xsd">
<Inherited>true</Inherited>
-
<http://localhost/mapguide/mapagent/mapagent.fcgi?OPERATION=ENUMERATERES
OURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library%3A%2F%2F&TYPE=&DEPTH=-
1##> <Groups>
-
<http://localhost/mapguide/mapagent/mapagent.fcgi?OPERATION=ENUMERATERES
OURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library%3A%2F%2F&TYPE=&DEPTH=-
1##> <Group>
<Name>Everyone</Name>
<Permissions>r,w</Permissions>
</Group>
</Groups>
</Security>
</ResourceDocumentHeader>
</ResourceDocument>
________________________________
Van: Jason Birch [mailto:Jason.Birch at nanaimo.ca]
Verzonden: dinsdag 14 maart 2006 8:19
Aan: users at mapguide.osgeo.org
Onderwerp: MapGuide OS with Google Earth
I've uploaded a pretty basic example of using MapGuide OS to serve KML
to Google Earth, based on an example that Bob Bray provided with the
first preview:
http://www.jasonbirch.com/files/google_earth.zip
This is totally unsupported, but in my experience it works with the
Sheboygan data set. On a standard Windows/Apache/Php install you should
just have to follow the instructions in the readme.txt file.
I had a better example that worked to return data for the current
bounding box (you can see it in action at http://earth.nanaimo.ca/ ) but
I was unable to get this working with the sample data, so either
something has changed with 1.0 or the sample data is different somehow
than what I'm serving. I didn't get any error messages, but seeing all
of the exception codes in the API, I guess I should be trapping for
these somehow. Not enough time to research now though.
My to-do list:
- clean up the code, make it more modular, and possibly use TJ's
KMLDocument class for generating the KML:
http://kml.tjworld.net/downloads.php
- figure out how to read the default scale ranges and symbology from
MapGuide, and return a semblance of those instead of having to custom
code each layer.
- dynamically rewrite the bounding box, so that it shifts to the
foreground when the view is tilted, allowing delivery of data without
killing the server with a huge extent
- deliver GroundOverlay images as an option for small-scale mapping
where serving vectors is inappropriate
Of course Autodesk could just step in any time now and provide a
template for default delivery of KML :)
Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide_users/attachments/20060410/2b3e239d/attachment.html
More information about the Mapguide_users
mailing list