Ruben,

I have the answer: your polygon is not closed. I do not have a 
reference, but please see the examples here, which show that for 
polygons, the last and first point must have the same coordinates:
http://en.wikipedia.org/wiki/Well-known_text

In my unit test fixture for a GeoSciML 3.0rc1 MappedFeature, which has 
property gsml:shape that is a GML 3.2 GeometryPropertyType, I changed 
the mapping for gsml:shape to:

<AttributeMapping>
<targetAttribute>gsml:shape</targetAttribute>
<idExpression>
<OCQL>strConcat('shape.', getId())</OCQL>
</idExpression>
<sourceExpression>
<OCQL>'POLYGON((268926 4810180, 268926 4829560, 296474 4829560, 296474 
4810180, 268926 4810180))'</OCQL>
</sourceExpression>
<targetAttributeNode>
gml:MultiSurfacePropertyType
</targetAttributeNode>
</AttributeMapping>

Note that I added the first point of your polygon again at the end to 
close it.

The corresponding fragment from the WFS response is:

<gsml:shape>
<!--#shape.mf.1-->
<gml:MultiSurface gml:id="shape.mf.1">
<gml:surfaceMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:posList>268926.0 4810180.0 268926.0 4829560.0 296474.0 4829560.0 
296474.0 4810180.0 268926.0 4810180.0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</gsml:shape>

This is almost correct.

One remaining problem is that there is no gml:id on the inner 
gml:Polygon, making the response schema-invalid. I have created a Jira 
issue for this defect:
https://jira.codehaus.org/browse/GEOT-3824

Justin, how should we modify the encoder to allow gml:id to be placed on 
every geometry nested inside the top-level geometry? Geometries are 
opaque to app-schema.

Kind regards,
Ben.


On 24/08/11 14:52, Ruben Velasco Vega wrote:
> Hi Ben,
>
> I tried that solution, using just one attributeMapping element:
>
> <AttributeMapping>
>       <targetAttribute>
>               gml:domainSet
>       </targetAttribute>
>       <sourceExpression>
>               <OCQL>'POLYGON((268926 4810180, 268926 4829560, 296474 4829560, 
> 296474 4810180))'</OCQL>
>       </sourceExpression>
>       <targetAttributeNode>
>               gml:MultiSurfacePropertyType
>       </targetAttributeNode>
> </AttributeMapping>
>
> But it didn't work and I got the same behavior.
> It also didn't work using the geometry column of a shapefile.
>
> I think I'll try to debug GeoServer + app-schema source code to see if it 
> helps me to understand how this works.
>
> I'll let you know if I make any progress.
>
> Best regards.
>
> Ruben Velasco.
>
> -----Mensaje original-----
> De: Ben Caradoc-Davies [mailto:[email protected]]
> Enviado el: miércoles, 24 de agosto de 2011 0:45
> Para: Ruben Velasco Vega
> CC: [email protected]
> Asunto: Re: [Geoserver-users] App-Schema: Mapping gml:AbstractGeometry
>
> Ruben,
>
> you have two attributeMapping elements for one targetAttribute. Please
> try merging them into a single element containing one targetAttribute,
> one targetAttributeNode, and one sourceExpression. Normally separate
> elements are used because the property element has a path one step
> shorter, but I suspect your mapping is almost correct because geometry
> properties are handled differently.
>
> I have never tried to use CQL to deliver a literal geometry in this way.
> Please let us know if it works! (I am in a conference [ISDE7] today and
> tomorrow and cannot test your mapping until Friday.)
>
> Kind regards,
> Ben.
>
> On 23/08/11 20:20, Ruben Velasco Vega wrote:
>> Hi,
>>
>> First of all let me put you in situation. I’m working on the mapping of the 
>> INSPIRE Annex II Land Cover schema. I’m using GeoServer 2.2 + app-schema. I 
>> tried GS 2.1, but I moved to 2.2 when I read this issue: 
>> http://jira.codehaus.org/browse/GEOS-4496
>>
>> I need to map the attribute “gml:domainSet” which has this definition:
>>
>> <element name="domainSet" type="gml:DomainSetType">
>>                                  <annotation>
>>                                                  
>> <documentation>…</documentation>
>>                                  </annotation>
>>                   </element>
>>                   <complexType name="DomainSetType">
>>                                  <sequence minOccurs="0">
>>                                                  <choice>
>>                                                                  <element 
>> ref="gml:AbstractGeometry"/>
>>                                                                  <element 
>> ref="gml:AbstractTimeObject"/>
>>                                                  </choice>
>>                                  </sequence>
>>                                  <attributeGroup 
>> ref="gml:OwnershipAttributeGroup"/>
>>                                  <attributeGroup 
>> ref="gml:AssociationAttributeGroup"/>
>>                   </complexType>
>>
>>
>> I want to use an explicit polygon so I wrote the mapping this way:
>>
>>
>>                                  <AttributeMapping>
>>                                                  <targetAttribute>
>>                                                                  
>> gml:domainSet
>>                                                  </targetAttribute>
>>                                                  <targetAttributeNode>
>>                                                                  
>> gml:MultiSurfacePropertyType
>>                                                  </targetAttributeNode>
>>                                  </AttributeMapping>
>>
>>                                  <AttributeMapping>
>>                                      <targetAttribute>
>>                                          gml:domainSet
>>                                      </targetAttribute>
>>                                      <sourceExpression>
>>                                          <OCQL>'POLYGON((268926 4810180, 
>> 268926 4829560, 296474 4829560, 296474 4810180))'</OCQL>
>>                                      </sourceExpression>
>>                                  </AttributeMapping>
>>
>> When I make this request: 
>> http://localhost:8080/geoserver/wfs?request=GetFeature&typeName=lcs:LandCoverSurfaceCoverage&outputFormat=text/xml;%20subtype=gml/3.2
>>
>> I get this response:
>>
>> <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0";  ...
>> <wfs:member>
>> <lcs:LandCoverSurfaceCoverage gml:id="land_cover_coverages.1">
>>
>>         [DOMAINSET SHOULD BE HERE]
>>
>> <cvgvp:domainExtent>
>> <gmd:EX_Extent>
>> …
>> …
>>
>> In the GeoServer log (with the GEOTOOLS_DEVELOPER_LOGGING.properties profie) 
>>  I find this pair of lines that maybe related to this problem:
>>
>> 2011-08-23 13:11:09,550 DEBUG [org.geotools.xml] - AbstractFeature is 
>> abstract
>> 2011-08-23 13:11:09,552 DEBUG [org.geotools.xml] - Property 
>> http://www.opengis.net/gml/3.2:domainSet not found but minoccurs>   0
>>
>> If I remove the “targetAttributeNode” of the mapping, I get this output:
>>
>> <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0";  ...
>> <wfs:member>
>> <lcs:LandCoverSurfaceCoverage gml:id="land_cover_coverages.1">
>>         <gml:domainSet/>
>> <cvgvp:domainExtent>
>> <gmd:EX_Extent>
>> <gmd:geographicElement>
>> …
>> …
>>
>> And in the log file I only get this line:
>>
>> 011-08-23 13:30:40,111 DEBUG [org.geotools.xml] - AbstractFeature is abstract
>>
>>
>> I have a similar problem with the geometry attribute of each element of this 
>> coverage using the “the_geom” column of a shapefile, but I think this one is 
>> more simple.
>>
>> I hope I’ve explained it right and someone can help me. Thank you in advance.
>>
>> Rubén Velasco
>>
>>
>> [http://www.gijon.eu/Imagenes/correo/pie_correo.jpg]
>>
>>
>>
>>
>

-- 
Ben Caradoc-Davies <[email protected]>
Software Engineering Team Leader
CSIRO Earth Science and Resource Engineering
Australian Resources Research Centre

------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to