I'll try these suggestions as soon as I can and report back. Thanks.

Rico

On Tue, May 24, 2011 at 9:15 AM, Justin Deoliveira <[email protected]>wrote:

> Hi Rico,
>
> On Thu, May 19, 2011 at 9:55 AM, Rico Lelina <[email protected]> wrote:
>
>> Hello,
>>
>> I have a SimpleFeatureCollection whose SimpleFeatures have been created
>> from a custom GeoJSON decoder. Then I try to encode the collection into GML
>> using the following code:
>>
>> GML encoder = new GML(GML.Version.WFS1_1);
>> encoder.encode(outputStream, featureCollection);
>>
>> I don't really recommend using these classes... Jody are these classes
> really tested at all? I have no idea what the point of them is. All the code
> that uses the encoder does it explicitly. I recommend users do that rather
> than give them another option that does not really work.
>
>
>> First, I found that if I do not set the namespace URI on the
>> SimpleFeatureTypeBuilder in my GeoJSON decoder to
>> http://www.opengis.net/wfs, the namespace on the properties in the
>> encoded GML is null, e.g. (see last 2 line lines):
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <wfs:FeatureCollection
>>     xmlns:ogc="http://www.opengis.net/ogc";
>>     xmlns:gml="http://www.opengis.net/gml";
>>     xmlns:xlink="http://www.w3.org/1999/xlink";
>>     xmlns:ows="http://www.opengis.net/ows";
>>     xmlns:wfs="http://www.opengis.net/wfs";>
>>     <gml:boundedBy>
>>         <gml:Envelope>
>>             <gml:lowerCorner>-124.1633 -34.3667</gml:lowerCorner>
>>             <gml:upperCorner>57.7144 47.7528</gml:upperCorner>
>>         </gml:Envelope>
>>     </gml:boundedBy>
>>     <gml:featureMember>
>>         <wfs:MultiPoint gml:id="9c068ab0-b56c-40bb-8e33-b4507ed3547c">
>>             <gml:name>Cape Town</gml:name>
>>             <gml:boundedBy>
>>                 <gml:Envelope>
>>                     <gml:lowerCorner>18.4167 -33.9167</gml:lowerCorner>
>>                     <gml:upperCorner>18.4167 -33.9167</gml:upperCorner>
>>                 </gml:Envelope>
>>             </gml:boundedBy>
>>             *<null:fillColor>#ee9900</null:fillColor>
>>             <null:strokeColor>#000000<null:strokeColor>
>> *etc.
>>
>> So I changed my GeoJSON decoder to set the namespace URI on the builder to
>> the URI above. Now the properties are encoding with wfs:fillColor,
>> wfs:strokeColor, etc.
>>
>
> An alternative that I think will work is to modify the encoder and populate
> the namespace context with a default namespace mapping. Something like:
>
> encoder.getNamespaces().put("", "<yourNamespaceURI>");
>
> While your solution works keep in mind that it is producing an invalid
> document by reusing the well known wfs schema. Those elements are unknown in
> the wfs schema and meant for a feature application schema. Generally we use
> some sort of custom schema uri for our feature attributes. So in your
> geojson code you can set the feature namespace uri to something like "
> http://geotools.org";. And then register it on the encoder:
>
> encoder.getNamespaces().put("feature", "http://geotools.org";)
>
> Then your GML document will contain those attributes with a "feature"
> prefix.
>
>
>> Second, I noticed that each gml:featureMember element has a 
>> gml:boundedByelement even though there is only a single point geometry. Is 
>> this because
>> the geometry is actually a MultiPoint?
>>
>
> All feature members may have a boundedBy element, regardless of the
> geometry type. You can turn this off with an encoder property:
>
> encoder.getProperties().add(GMLConfiguration.NO_FEATURE_BOUNDS);
>
>
>>
>> Third, during encoding I get these warning messages on the log. It may be
>> affecting performance when I'm encoding a huge number of features, and also
>> I think it should read "Could not find type..." Is there something I can do
>> in building the features to avoid these warning messages?
>>
>> May 19, 2011 10:23:45 AM org.geotools.gml2.bindings.GMLEncodingUtils
>> AbstractFeatureType_getProperties
>> WARNING: Could find type for Polygon in the schema, generating type from
>> feature.
>> May 19, 2011 10:23:45 AM org.geotools.gml2.bindings.GMLEncodingUtils
>> AbstractFeatureType_getProperties
>> WARNING: Could find type for MultiPoint in the schema, generating type
>> from feature.
>>
>>  Yeah, this leads me to believe that whatever code you are using (that GML
> class) is not setting up the schema properly. What I would suggest you do
> instead is:
>
> Encoder e = new Encoder(new org.geotools.wfs.v1_1.WFSConfiguration());
>
> And indeed that is a typo. Will fix.
>
> Thanks.
>>
>
> Hope that helps.
>
>>
>> --
>> Rico
>>
>>
>> ------------------------------------------------------------------------------
>> What Every C/C++ and Fortran developer Should Know!
>> Read this article and learn how Intel has extended the reach of its
>> next-generation tools to help Windows* and Linux* C/C++ and Fortran
>> developers boost performance applications - including clusters.
>> http://p.sf.net/sfu/intel-dev2devmay
>> _______________________________________________
>> Geotools-gt2-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>>
>>
>
>
> --
> Justin Deoliveira
> OpenGeo - http://opengeo.org
> Enterprise support for open source geospatial.
>
>


-- 
Rico
------------------------------------------------------------------------------
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery, 
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now. 
http://p.sf.net/sfu/quest-d2dcopy1
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to