From: Trevor S. <ts...@ty...> - 2004-12-17 02:54:52
|
The situation, using GeoTools 2.0 (jars timestamped August 3rd): We are integrating GIS into our application. We run a GIS service inside our servlet. The client app, based on user actions, sends an Envelope request to the server. The server constructs a geometry filter and extracts the relevant features from the feature source (currently a shapefile). The server then uses the FeatureTransformer to turn the FeatureResults into a GML string, which it sends to the client. The client then saves the GML file and reads it in, adding a layer to the j2d renderer. Our first set of test data came from County A, and things worked quite well with one problem -- trying to load a GML file with more than 2000 features would throw a TopologyException. Is this a known (but undocumented) limit of the GMLDataSource? Is there a workaround? Our second set of data are shapefiles from County B. They load just fine in a test application I built. However, when the client tries to load most portions from GML, it throws the following exception: org.geotools.data.DataSourceException: Parsing error: geometries must not contain null elements at org.geotools.data.gml.GMLDataSource.parse(GMLDataSource.java:404) at org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:240) at org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:182) at org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:205) at org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:256) This seems to occur when the GML includes a feature with complicated geometry, such as polygons-within-polygons with scads of vertecies. One troublesome feature in particular describes the boundaries of a national forest, and so has vertecies on every parcel that borders the forest. But it should be possible to load, right? I've included a sample GML file at http://trevorstone.org/test.gml (340K). This has a smaller problematic feature than the whole forest. If you comment out the last feature, the GMLDataSource works like a charm. But as-is, it will throw that exception. Once GML works, parcels like the national forest will still be problematic -- it can boost the size of the GML file by several megs, obviously something to avoid sending over the wire. In most cases, the user doesn't want to see the whole thing, just his area of interest (plus a little). Is there a good way to crop the FeatureResult to an Envelope before converting to GML? And one more related question -- when can we expect a GMLDataStore? Thanks for your time and knowledge, -- Trevor Stone ~ <ts...@ty...> Software Developer ~ Tyler Technologies, Eagle Division Denver Office ~ 1-866-554-4434 / 303-271-9100 ext 208 Curse of the moment: Thou wanton full-gorged gull-catcher! For millions of years mankind lived just like animals. Then something happened that unleashed the power of our immagination. We learned to talk. -- Stephen Hawking on Pink Floyd's "Keep Talking" |
From: Chris H. <ch...@op...> - 2004-12-17 12:57:43
|
On Thu, 16 Dec 2004, Trevor Stone wrote: > The situation, using GeoTools 2.0 (jars timestamped August 3rd): > > We are integrating GIS into our application. We run a GIS service > inside our servlet. The client app, based on user actions, sends an > Envelope request to the server. The server constructs a geometry filter > and extracts the relevant features from the feature source (currently a > shapefile). The server then uses the FeatureTransformer to turn the > FeatureResults into a GML string, which it sends to the client. > The client then saves the GML file and reads it in, adding a layer to > the j2d renderer. Interesting, is there a good reason you do not use a WFS? That is exactly what a WFS does - takes an envelope, returns gml from a feature source. Along with lots of other filters, and transactions. There is an open source WFS based on Geotools - http://geoserver.sourceforge.net If you want to do anything more than what you are doing right now then there is a good chance we already did it in GeoServer. And all your request and responses would be interoperable, your client could then easily interact with other WFS's. > > Our first set of test data came from County A, and things worked quite > well with one problem -- trying to load a GML file with more than 2000 > features would throw a TopologyException. Is this a known (but > undocumented) limit of the GMLDataSource? Is there a workaround? Dont use GMLDataSource? I didnt even know it was still in the code base. It was probably our worst datasource. Thankfully David Zwiers wrote a great GMLDataStore, that even does schema parsing, and should just be all around a lot better. It is availabe in 2.1, should be in the last 2.1 release, or on cvs. I believe that should fix most all your problems. best regards, Chris > > Our second set of data are shapefiles from County B. They load just > fine in a test application I built. However, when the client tries > to load most portions from GML, it throws the following exception: > > org.geotools.data.DataSourceException: Parsing error: geometries must > not contain null elements > at org.geotools.data.gml.GMLDataSource.parse(GMLDataSource.java:404) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:240) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:182) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:205) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:256) > > This seems to occur when the GML includes a feature with complicated > geometry, such as polygons-within-polygons with scads of vertecies. > One troublesome feature in particular describes the boundaries of a > national forest, and so has vertecies on every parcel that borders the > forest. But it should be possible to load, right? > > I've included a sample GML file at http://trevorstone.org/test.gml > (340K). This has a smaller problematic feature than the whole > forest. If you comment out the last feature, the GMLDataSource works > like a charm. But as-is, it will throw that exception. > > > Once GML works, parcels like the national forest will still be > problematic -- it can boost the size of the GML file by several megs, > obviously something to avoid sending over the wire. In most cases, > the user doesn't want to see the whole thing, just his area of > interest (plus a little). Is there a good way to crop the > FeatureResult to an Envelope before converting to GML? > > > And one more related question -- when can we expect a GMLDataStore? > > Thanks for your time and knowledge, > > -- > Trevor Stone ~ <ts...@ty...> > Software Developer ~ Tyler Technologies, Eagle Division > Denver Office ~ 1-866-554-4434 / 303-271-9100 ext 208 > Curse of the moment: Thou wanton full-gorged gull-catcher! > For millions of years mankind lived just like animals. Then something > happened that unleashed the power of our immagination. We learned to > talk. -- Stephen Hawking on Pink Floyd's "Keep Talking" > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://productguide.itmanagersjournal.com/ > _______________________________________________ > Geotools-gt2-users mailing list > Geo...@li... > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users > -- |
From: David Z. <dz...@re...> - 2004-12-17 15:37:38
|
Hi Trevor, I have built a new GML (streaming) parser ... it's availiable in the repository, and is fairly well tested. I can also point you to a jar if you want. It is built against the current main implementation though, so this would involve transitioning your project to gt 2.1.x If you have any more questions, feel free to email me. David On Thu, 2004-12-16 at 18:54, Trevor Stone wrote: > The situation, using GeoTools 2.0 (jars timestamped August 3rd): > > We are integrating GIS into our application. We run a GIS service > inside our servlet. The client app, based on user actions, sends an > Envelope request to the server. The server constructs a geometry filter > and extracts the relevant features from the feature source (currently a > shapefile). The server then uses the FeatureTransformer to turn the > FeatureResults into a GML string, which it sends to the client. > The client then saves the GML file and reads it in, adding a layer to > the j2d renderer. > > Our first set of test data came from County A, and things worked quite > well with one problem -- trying to load a GML file with more than 2000 > features would throw a TopologyException. Is this a known (but > undocumented) limit of the GMLDataSource? Is there a workaround? > > Our second set of data are shapefiles from County B. They load just > fine in a test application I built. However, when the client tries > to load most portions from GML, it throws the following exception: > > org.geotools.data.DataSourceException: Parsing error: geometries must > not contain null elements > at org.geotools.data.gml.GMLDataSource.parse(GMLDataSource.java:404) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:240) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:182) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:205) > at > org.geotools.data.gml.GMLDataSource.getFeatures(GMLDataSource.java:256) > > This seems to occur when the GML includes a feature with complicated > geometry, such as polygons-within-polygons with scads of vertecies. > One troublesome feature in particular describes the boundaries of a > national forest, and so has vertecies on every parcel that borders the > forest. But it should be possible to load, right? > > I've included a sample GML file at http://trevorstone.org/test.gml > (340K). This has a smaller problematic feature than the whole > forest. If you comment out the last feature, the GMLDataSource works > like a charm. But as-is, it will throw that exception. > > > Once GML works, parcels like the national forest will still be > problematic -- it can boost the size of the GML file by several megs, > obviously something to avoid sending over the wire. In most cases, > the user doesn't want to see the whole thing, just his area of > interest (plus a little). Is there a good way to crop the > FeatureResult to an Envelope before converting to GML? > > > And one more related question -- when can we expect a GMLDataStore? > > Thanks for your time and knowledge, > > -- > Trevor Stone ~ <ts...@ty...> > Software Developer ~ Tyler Technologies, Eagle Division > Denver Office ~ 1-866-554-4434 / 303-271-9100 ext 208 > Curse of the moment: Thou wanton full-gorged gull-catcher! > For millions of years mankind lived just like animals. Then something > happened that unleashed the power of our immagination. We learned to > talk. -- Stephen Hawking on Pink Floyd's "Keep Talking" > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://productguide.itmanagersjournal.com/ > _______________________________________________ > Geotools-gt2-users mailing list > Geo...@li... > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users |