Hello,
In my quest to execute XQuery with GIS data, I found a problem with
WKTReader / WKTWriter.
In the first version of my application, I let the user to write a WKT
Polygon to create a criteria for the request (for example : return all
polygon which contains the POINT (278415 187644) ). I used this point to
create my XQuery. So I used the class WKTReader to create a Geometry
object, which I serialize again with org.geotools.xml.Encoder :
FeatureCollection featureCollection =
DefaultFeatureCollections.newCollection();
org.geotools.xml.Configuration configuration = new
org.geotools.gml2.GMLConfiguration(); // For test, I'm working on GML V2
org.geotools.xml.Encoder encoder = new org.geotools.xml.Encoder(
configuration );
// output stream to serialize to
OutputStream xml = new ByteArrayOutputStream();
// encode. hmmm, guess I can do something better ?
if("Point".equalsIgnoreCase(geo.getGeometryType()))
encoder.encode(geo, GML.Point, xml);
else if("Polygon".equalsIgnoreCase(geo.getGeometryType()))
encoder.encode(geo, GML.Polygon, xml);
else if("LineString".equalsIgnoreCase(geo.getGeometryType()))
encoder.encode(geo, GML.LineString, xml);
else if("LinearRing".equalsIgnoreCase(geo.getGeometryType()))
encoder.encode(geo, GML.LinearRing, xml);
The point serialized in GML is :
<gml:Point xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink">
<gml:coord><gml:X>278415.0</gml:X><gml:Y>187644.0</gml:Y></gml:coord>
</gml:Point>
As you see, the srsName is not present. If I execute the request,
nothing is returned. If I add the attribute srsName="osgb:BNG" for
gml:Point, I get my objects.
Is it a bug ? Perhaps, I misunderstood something ?
I tried to put the SRS ID in the Geometry without success :
geo.setSRID(4326);
The SR ID is not the second part of the srsName (authority:ID) ?
How can I store the srsName in my GML ?
When I get the result, I need to parse the GML fragment. I did it but
the osgb:BNG authority is not found. In google, I found this issue :
http://jira.codehaus.org/browse/GEOT-1307
How can I declare an authority ?
I tried :
crs = CRS
.parseWKT("PROJCS[\"OSGB 1936 / British National
Grid\", "
+ "GEOGCS[\"OSGB 1936\", "
+ "DATUM[\"OSGB_1936\", "
+ "SPHEROID[\"Airy 1830\", 6377563.396,
299.3249646, AUTHORITY[\"EPSG\",\"7001\"]], "
+ "AUTHORITY[\"EPSG\",\"6277\"]], "
+ "PRIMEM[\"Greenwich\", 0.0,
AUTHORITY[\"EPSG\",\"8901\"]], "
+ "UNIT[\"degree\", 0.017453292519943295], "
+ "AXIS[\"Longitude\", EAST], "
+ "AXIS[\"Latitude\", NORTH], "
+ "AUTHORITY[\"EPSG\",\"4277\"]], "
+ "PROJECTION[\"Transverse_Mercator\"], "
+ "PARAMETER[\"central_meridian\", -2.0], "
+ "PARAMETER[\"latitude_of_origin\", 49.0], "
+ "PARAMETER[\"scale_factor\", 0.9996012717], "
+ "PARAMETER[\"false_easting\", 400000.0], "
+ "PARAMETER[\"false_northing\", -100000.0], "
+ "UNIT[\"m\", 1.0], " + "AXIS[\"x\", EAST], "
+ "AXIS[\"y\", NORTH], "
+ "AUTHORITY[\"osgb\",\"BNG\"]]");
String code = CRS.lookupIdentifier(crs, true );
But I get
org.opengis.referencing.FactoryException: Les extensions de Geotools
sont requises pour l'opération "getIdentifiedObjectFinder".
which means The Geotools extensions are required for the operation
"getIdentifiedObjectFinder".
Thanks in advance for your help.
Regards,
--
Robert JACOLIN
M2M
ANYWARE TECHNOLOGIES
Tél : +33 (0)5.61.00.06.56
Fax : +33 (0)5 61 00 51 46
www.anyware-tech.com
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel