From: Trung D. <mas...@ya...> - 2006-10-23 23:29:09
|
Opps, Sorry Cory,=0A=0AThat's my bad. The String sld should be like this (t= his is a little bit different than the other case, but we can still see the= malformed xml code, like "<ogc:FeatureId =3D"parcelall.1917"/>", which is = one of the place that can cause the exception:=0A--------------------------= -------------------------------------------=0ADefault StylerDefault Stylerp= arcelallnameAbstracttitle1.7976931348623157E308#9191FF0.05#6666FFbuttmiter1= .01.00.0parcelallnameAbstracttitle1.7976931348623157E308#FF33990.5parcelall= nameAbstracttitle1.7976931348623157E308#FF00CC0.5=0A-----------------------= ------------------------------------=0A=0AThank you,=0A=0ATrung=0A=0A----- = Original Message ----=0AFrom: Cory Horner <ch...@re...>=0ATo: g= eot...@li...=0ACc: Trung Dinh <masktuxedo77@yaho= o.com>=0ASent: Monday, October 23, 2006 5:07:39 PM=0ASubject: Re: [Geotools= -gt2-users] SLDTransformer bug(?)=0A=0ATrung Dinh wrote:=0A=0A> We are usin= g Geotools 2.1M2. We used SDLTransfromer to transform some =0A> styles into= XML. Then when loading it back later to our tool, we got =0A> this Excepti= on:=0A>=0A> org.xml.sax.SAXParseException: Element type "ogc:FeatureId" mus= t be =0A> followed by either attribute specifications, ">" or "/>".=0A>=0A>= We think the problem is that SLDTransformer.transfrom() has some bug =0A> = in it. Anybody know if in a newer version this bug was fixed already? =0A>= Or if not, anybody know any workaround or anything?=0A>=0A> Thank you,=0A>= =0A> This is our analysis of the code:=0A>=0A> ----------------------------= ----------------------------=0A> + The code to transform it into XML was so= mething like this:=0A>=0A> String sld =3D new SLDTransformer().transform(ne= w Style[] { =0A> layer.getStyle() });=0A>=0A> + and we loaded it back like = this:=0A>=0A> InputStream is =3D new ByteArrayInputStream(sld.getBytes());= =0A> Style[] styles =3D new SLDParser(StyleFactory.createStyleFactory(), = =0A> is).readXML(); // <--Exception was thrown here=0A>=0A> + layer.getStyl= e().featureTypeStyList[1].ruleList[o].filter =3D [ =0A> parcelall.1955, par= celall.1919, parcelall.1958, parcelall.1917, =0A> parcelall.1956 ]=0A>=0A> = + The string "sld" had this value:=0A> -------------------------=0A> "Defau= lt StylerDefault =0A> StylerparcelallnameAbstracttitle1.7976931348623157E30= 8#9191FF0.05#6666FFbuttmiter1.01.00.0parcelallnameAbstracttitle1.7976931348= 623157E308#FF33330.5"=0A> ----------------------------=0A=0AIt is possible = that SLDTransformer supports more than SLDParser does. =0AWhat does your g= enerated sld look like? (it should be xml, what you have =0Ashown looks mor= e like the output of StyledLayerDescriptor.toString()...)=0A=0AI made some = changes on the 2.2.x branch which addressed some =0Ainconsistencies between= these two classes, but others may be =0Aoutstanding. Perhaps you could t= ry again using the 2.2.1 release, and =0Aif that fails we can file a bug re= port with your generated SLD file =0Aattached.=0A=0ACheers,=0ACory.=0A=0A= =0A=0A=0A=0A=0A |
From: Trung D. <mas...@ya...> - 2006-10-23 23:32:34
|
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2xkOlN0 eWxlZExheWVyRGVzY3JpcHRvciB4bWxuczpzbGQ9Imh0dHA6Ly93d3cub3Bl bmdpcy5uZXQvc2xkIiB4bWxuczpvZ2M9Imh0dHA6Ly93d3cub3Blbmdpcy5u ZXQvb2djIiB4bWxuczpnbWw9Imh0dHA6Ly93d3cub3Blbmdpcy5uZXQvZ21s Ij48c2xkOk5hbWVkTGF5ZXI+PHNsZDpVc2VyU3R5bGU+PHNsZDpOYW1lPkRl ZmF1bHQgU3R5bGVyPC9zbGQ6TmFtZT48c2xkOlRpdGxlPkRlZmF1bHQgU3R5 bGVyPC9zbGQ6VGl0bGU+PHNsZDpBYnN0cmFjdD48L3NsZDpBYnN0cmFjdD48 c2xkOkZlYXR1cmVUeXBlU3R5bGU+PHNsZDpGZWF0dXJlVHlwZU5hbWU+cGFy Y2VsYWxsPC9zbGQ6RmVhdHVyZVR5cGVOYW1lPjxzbGQ6UnVsZT48c2xkOk5h bWU+bmFtZTwvc2xkOk5hbWU+PHNsZDpBYnN0cmFjdD5BYnN0cmFjdDwvc2xk OkFic3RyYWN0PjxzbGQ6VGl0bGU+dGl0bGU8L3NsZDpUaXRsZT48c2xkOk1h eFNjYWxlRGVub21pbmF0b3I+MS43OTc2OTMxMzQ4NjIzMTU3RTMwODwvc2xk Ok1heFNjYWxlRGVub21pbmF0b3I+PHNsZDpQb2x5Z29uU3ltYm9saXplcj48 c2xkOkZpbGw+PHNsZDpDc3NQYXJhbWV0ZXIgbmFtZT0iZmlsbCI+PG9nYzpM aXRlcmFsPiM5MTkxRkY8L29nYzpMaXRlcmFsPjwvc2xkOkNzc1BhcmFtZXRl cj48c2xkOkNzc1BhcmFtZXRlciBuYW1lPSJmaWxsLW9wYWNpdHkiPjxvZ2M6 TGl0ZXJhbD4wLjA1PC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+ PC9zbGQ6RmlsbD48c2xkOlN0cm9rZT48c2xkOkNzc1BhcmFtZXRlciBuYW1l PSJzdHJva2UiPjxvZ2M6TGl0ZXJhbD4jNjY2NkZGPC9vZ2M6TGl0ZXJhbD48 L3NsZDpDc3NQYXJhbWV0ZXI+PHNsZDpDc3NQYXJhbWV0ZXIgbmFtZT0ic3Ry b2tlLWxpbmVjYXAiPjxvZ2M6TGl0ZXJhbD5idXR0PC9vZ2M6TGl0ZXJhbD48 L3NsZDpDc3NQYXJhbWV0ZXI+PHNsZDpDc3NQYXJhbWV0ZXIgbmFtZT0ic3Ry b2tlLWxpbmVqb2luIj48b2djOkxpdGVyYWw+bWl0ZXI8L29nYzpMaXRlcmFs Pjwvc2xkOkNzc1BhcmFtZXRlcj48c2xkOkNzc1BhcmFtZXRlciBuYW1lPSJz dHJva2Utb3BhY2l0eSI+PG9nYzpMaXRlcmFsPjEuMDwvb2djOkxpdGVyYWw+ PC9zbGQ6Q3NzUGFyYW1ldGVyPjxzbGQ6Q3NzUGFyYW1ldGVyIG5hbWU9InN0 cm9rZS13aWR0aCI+PG9nYzpMaXRlcmFsPjEuMDwvb2djOkxpdGVyYWw+PC9z bGQ6Q3NzUGFyYW1ldGVyPjxzbGQ6Q3NzUGFyYW1ldGVyIG5hbWU9InN0cm9r ZS1kYXNob2Zmc2V0Ij48b2djOkxpdGVyYWw+MC4wPC9vZ2M6TGl0ZXJhbD48 L3NsZDpDc3NQYXJhbWV0ZXI+PC9zbGQ6U3Ryb2tlPjwvc2xkOlBvbHlnb25T eW1ib2xpemVyPjwvc2xkOlJ1bGU+PC9zbGQ6RmVhdHVyZVR5cGVTdHlsZT48 c2xkOkZlYXR1cmVUeXBlU3R5bGU+PHNsZDpGZWF0dXJlVHlwZU5hbWU+cGFy Y2VsYWxsPC9zbGQ6RmVhdHVyZVR5cGVOYW1lPjxzbGQ6UnVsZT48c2xkOk5h bWU+bmFtZTwvc2xkOk5hbWU+PHNsZDpBYnN0cmFjdD5BYnN0cmFjdDwvc2xk OkFic3RyYWN0PjxzbGQ6VGl0bGU+dGl0bGU8L3NsZDpUaXRsZT48c2xkOk1h eFNjYWxlRGVub21pbmF0b3I+MS43OTc2OTMxMzQ4NjIzMTU3RTMwODwvc2xk Ok1heFNjYWxlRGVub21pbmF0b3I+PG9nYzpGaWx0ZXI+PG9nYzpGZWF0dXJl SWQgPSJwYXJjZWxhbGwuMTkxOSIvPjxvZ2M6RmVhdHVyZUlkID0icGFyY2Vs YWxsLjE5NTgiLz48b2djOkZlYXR1cmVJZCA9InBhcmNlbGFsbC4xOTU2Ii8+ PC9vZ2M6RmlsdGVyPjxzbGQ6UG9seWdvblN5bWJvbGl6ZXI+PHNsZDpGaWxs PjxzbGQ6Q3NzUGFyYW1ldGVyIG5hbWU9ImZpbGwiPjxvZ2M6TGl0ZXJhbD4j RkYzMzk5PC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PHNsZDpD c3NQYXJhbWV0ZXIgbmFtZT0iZmlsbC1vcGFjaXR5Ij48b2djOkxpdGVyYWw+ MC41PC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PC9zbGQ6Rmls bD48L3NsZDpQb2x5Z29uU3ltYm9saXplcj48L3NsZDpSdWxlPjwvc2xkOkZl YXR1cmVUeXBlU3R5bGU+PHNsZDpGZWF0dXJlVHlwZVN0eWxlPjxzbGQ6RmVh dHVyZVR5cGVOYW1lPnBhcmNlbGFsbDwvc2xkOkZlYXR1cmVUeXBlTmFtZT48 c2xkOlJ1bGU+PHNsZDpOYW1lPm5hbWU8L3NsZDpOYW1lPjxzbGQ6QWJzdHJh Y3Q+QWJzdHJhY3Q8L3NsZDpBYnN0cmFjdD48c2xkOlRpdGxlPnRpdGxlPC9z bGQ6VGl0bGU+PHNsZDpNYXhTY2FsZURlbm9taW5hdG9yPjEuNzk3NjkzMTM0 ODYyMzE1N0UzMDg8L3NsZDpNYXhTY2FsZURlbm9taW5hdG9yPjxvZ2M6Rmls dGVyPjxvZ2M6RmVhdHVyZUlkID0icGFyY2VsYWxsLjE5NTUiLz48b2djOkZl YXR1cmVJZCA9InBhcmNlbGFsbC4xOTE5Ii8+PG9nYzpGZWF0dXJlSWQgPSJw YXJjZWxhbGwuMTk1OCIvPjxvZ2M6RmVhdHVyZUlkID0icGFyY2VsYWxsLjE5 MTciLz48b2djOkZlYXR1cmVJZCA9InBhcmNlbGFsbC4xOTU2Ii8+PC9vZ2M6 RmlsdGVyPjxzbGQ6UG9seWdvblN5bWJvbGl6ZXI+PHNsZDpGaWxsPjxzbGQ6 Q3NzUGFyYW1ldGVyIG5hbWU9ImZpbGwiPjxvZ2M6TGl0ZXJhbD4jRkYwMEND PC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PHNsZDpDc3NQYXJh bWV0ZXIgbmFtZT0iZmlsbC1vcGFjaXR5Ij48b2djOkxpdGVyYWw+MC41PC9v Z2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PC9zbGQ6RmlsbD48L3Ns ZDpQb2x5Z29uU3ltYm9saXplcj48L3NsZDpSdWxlPjwvc2xkOkZlYXR1cmVU eXBlU3R5bGU+PC9zbGQ6VXNlclN0eWxlPjwvc2xkOk5hbWVkTGF5ZXI+PC9z bGQ6U3R5bGVkTGF5ZXJEZXNjcmlwdG9yPg== |
From: Trung D. <mas...@ya...> - 2006-10-24 21:35:02
|
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2xkOlN0 eWxlZExheWVyRGVzY3JpcHRvciB4bWxuczpzbGQ9Imh0dHA6Ly93d3cub3Bl bmdpcy5uZXQvc2xkIiB4bWxuczpvZ2M9Imh0dHA6Ly93d3cub3Blbmdpcy5u ZXQvb2djIiB4bWxuczpnbWw9Imh0dHA6Ly93d3cub3Blbmdpcy5uZXQvZ21s Ij48c2xkOk5hbWVkTGF5ZXI+PHNsZDpVc2VyU3R5bGU+PHNsZDpOYW1lPkRl ZmF1bHQgU3R5bGVyPC9zbGQ6TmFtZT48c2xkOlRpdGxlPkRlZmF1bHQgU3R5 bGVyPC9zbGQ6VGl0bGU+PHNsZDpBYnN0cmFjdD48L3NsZDpBYnN0cmFjdD48 c2xkOkZlYXR1cmVUeXBlU3R5bGU+PHNsZDpOYW1lPm5hbWU8L3NsZDpOYW1l PjxzbGQ6VGl0bGU+dGl0bGU8L3NsZDpUaXRsZT48c2xkOkFic3RyYWN0PmFi c3RyYWN0PC9zbGQ6QWJzdHJhY3Q+PHNsZDpGZWF0dXJlVHlwZU5hbWU+RmVh dHVyZTwvc2xkOkZlYXR1cmVUeXBlTmFtZT48c2xkOlNlbWFudGljVHlwZUlk ZW50aWZpZXI+Z2VuZXJpYzpnZW9tZXRyeTwvc2xkOlNlbWFudGljVHlwZUlk ZW50aWZpZXI+PHNsZDpSdWxlPjxzbGQ6TmFtZT5uYW1lPC9zbGQ6TmFtZT48 c2xkOlRpdGxlPnRpdGxlPC9zbGQ6VGl0bGU+PHNsZDpBYnN0cmFjdD5BYnN0 cmFjdDwvc2xkOkFic3RyYWN0PjxvZ2M6RmlsdGVyPjxvZ2M6RmVhdHVyZUlk IGZpZD0icGFyY2VsbC4yIi8+PG9nYzpGZWF0dXJlSWQgZmlkPSJwYXJjZWxs LjAiLz48b2djOkZlYXR1cmVJZCBmaWQ9InBhcmNlbGwuMyIvPjxvZ2M6RmVh dHVyZUlkIGZpZD0icGFyY2VsbC4xIi8+PG9nYzpGZWF0dXJlSWQgZmlkPSJw YXJjZWxsLjQiLz48L29nYzpGaWx0ZXI+PHNsZDpNYXhTY2FsZURlbm9taW5h dG9yPjEuNzk3NjkzMTM0ODYyMzE1N0UzMDg8L3NsZDpNYXhTY2FsZURlbm9t aW5hdG9yPjxzbGQ6UG9seWdvblN5bWJvbGl6ZXI+PHNsZDpGaWxsPjxzbGQ6 Q3NzUGFyYW1ldGVyIG5hbWU9ImZpbGwiPjxvZ2M6TGl0ZXJhbD4jODA4MDgw PC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PHNsZDpDc3NQYXJh bWV0ZXIgbmFtZT0iZmlsbC1vcGFjaXR5Ij48b2djOkxpdGVyYWw+MS4wPC9v Z2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PC9zbGQ6RmlsbD48c2xk OlN0cm9rZT48c2xkOkNzc1BhcmFtZXRlciBuYW1lPSJzdHJva2UiPjxvZ2M6 TGl0ZXJhbD4jMDAwMDAwPC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0 ZXI+PHNsZDpDc3NQYXJhbWV0ZXIgbmFtZT0ic3Ryb2tlLWxpbmVjYXAiPjxv Z2M6TGl0ZXJhbD5idXR0PC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0 ZXI+PHNsZDpDc3NQYXJhbWV0ZXIgbmFtZT0ic3Ryb2tlLWxpbmVqb2luIj48 b2djOkxpdGVyYWw+bWl0ZXI8L29nYzpMaXRlcmFsPjwvc2xkOkNzc1BhcmFt ZXRlcj48c2xkOkNzc1BhcmFtZXRlciBuYW1lPSJzdHJva2Utb3BhY2l0eSI+ PG9nYzpMaXRlcmFsPjE8L29nYzpMaXRlcmFsPjwvc2xkOkNzc1BhcmFtZXRl cj48c2xkOkNzc1BhcmFtZXRlciBuYW1lPSJzdHJva2Utd2lkdGgiPjxvZ2M6 TGl0ZXJhbD4xPC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PHNs ZDpDc3NQYXJhbWV0ZXIgbmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiPjxvZ2M6 TGl0ZXJhbD4wPC9vZ2M6TGl0ZXJhbD48L3NsZDpDc3NQYXJhbWV0ZXI+PC9z bGQ6U3Ryb2tlPjwvc2xkOlBvbHlnb25TeW1ib2xpemVyPjwvc2xkOlJ1bGU+ PC9zbGQ6RmVhdHVyZVR5cGVTdHlsZT48L3NsZDpVc2VyU3R5bGU+PC9zbGQ6 TmFtZWRMYXllcj48L3NsZDpTdHlsZWRMYXllckRlc2NyaXB0b3I+DQo= |
From: Cory H. <ch...@re...> - 2006-10-25 01:30:53
|
Trung Dinh wrote: > I have just downloaded Geotools 2.2.1 for testing. It seems that the > new line of code does not solve all the problem. Now Geotools will not > throw Exception anymore, but if my original FidFilter before the > transformation has more than 1 ids in it, after the transformation we > will only have 1. > > This is the code I use to test: > > [0] public static void main(String[] arg) { > [1] List fiveFeatureId = new ArrayList(); > [2] for (int i = 0; i < 5; i++) { > [3] fiveFeatureId.add("parcell."+ i ); > [4] } > > [5] FidFilter fidF = > FilterFactoryFinder.createFilterFactory().createFidFilter(); > [6] fidF.addAllFids(fiveFeatureId); > > [7] Style styleBefore = new StyleBuilder().createStyle(); > [8] Symbolizer sym = new StyleBuilder().createPolygonSymbolizer(); > [9] Rule r = new StyleBuilder().createRule(sym); > [10] r.setFilter(fidF); > [11] FeatureTypeStyle featureTypeStyle = > styleBefore.getFeatureTypeStyles()[0]; > [12] featureTypeStyle.addRule(r); > [13] styleBefore.addFeatureTypeStyle(featureTypeStyle); > > [14] String filterName = fidF.getClass().getName(); > [15] try { > [16] String sld = new SLDTransformer().transform(new Style[] { > styleBefore }); > > [17] InputStream is = new ByteArrayInputStream(sld.getBytes()); > [18] Style[] styles = new > SLDParser(StyleFactoryFinder.createStyleFactory(), is).readXML(); > > [19] System.out.println("Transformation with '" + filterName + > "' Correctly: " + styleBefore.equals(styles[0])); > [20] //This would print something like "Transformation with > 'org.geotools.filter.FidFilterImpl' Correctly: false" > > [21] } catch (TransformerException e) { > [22] System.err.println("Tranformation Error When > Transforming... "); > [23] } > [24] } > > --------------------------------------------------------------------- > Using Eclipse's debugging tool, I can see that 'styleBefore' in line > [16] has a FidFilter with a set of 5 ids, "[ parcell.2, parcell.0, > parcell.3, parcell.1, parcell.4 ]", while styler[0] in line [19] has a > filer with only 1 id, "[parcell.4]". > > So it looks like between writing stuff into XML and reading it back, > some ids got droped. I will not paste the XML string here, since my > Yahoo Mail will make it something else. But I attached it as a text > file for you. > > Do you know if this bug has been reported/fixed? Hi Trung, Thank you for the test case -- this made the issue much quicker to fix. I created a bug for this issue in our JIRA tracker: http://jira.codehaus.org/browse/GEOT-992 I have a partial fix completed, but it is getting late... will finish tomorrow. Cheers, Cory. --- Cory Horner Refractions Research http://www.refractions.net |
From: Cory H. <ch...@re...> - 2006-10-25 18:08:34
|
Cory Horner wrote: >Trung Dinh wrote: > >>..my original FidFilter before the >>transformation has more than 1 ids in it, after the transformation we >>will only have 1. >> >> >I created a bug for this issue in our JIRA tracker: >http://jira.codehaus.org/browse/GEOT-992 > >I have a partial fix completed, but it is getting late... will finish >tomorrow. > > Okay, i've commited the fix to the 2.2.x branch, and am running the tests on 2.3.x and trunk to push it forward there as well. The jars have been deployed to our maven repository, so you can grab the fixed version here: http://lists.refractions.net/m2/org/geotools/gt2-main/2.2.2-SNAPSHOT/ Cheers, Cory. --- Cory Horner Refractions Research http://www.refractions.net |
From: Cory H. <ch...@re...> - 2006-10-24 00:14:01
|
Trung Dinh wrote: > Opps, Sorry Cory, > > That's my bad. The String sld should be like this (this is a little > bit different than the other case, but we can still see the malformed > xml code, like "<ogc:FeatureId ="parcelall.1917"/>", which is one of > the place that can cause the exception: > --------------------------------------------------------------------- > Default StylerDefault > StylerparcelallnameAbstracttitle1.7976931348623157E308#9191FF0.05#6666FFbuttmiter1.01.00.0parcelallnameAbstracttitle1.7976931348623157E308#FF33990.5parcelallnameAbstracttitle1.7976931348623157E308#FF00CC0.5 > ----------------------------------------------------------- Hi Trung, This should be: <ogc:FeatureId fid="parcelall.1917"/> In this case the SLDTransformer is producing mangled XML, and the SLDParser is barfing as it should. The problem occurs in the FilterTransformer class. Between the 2.1.x and 2.2.x branches, I see the following change: - atts.addAttribute("", "fid", "", "", fids[i]); + atts.addAttribute("", "fid", "fid", "", fids[i]); So this problem was fixed on the 2.2.x branch: r15885 | jeichar | 2005-09-27 Cory. |