jts
jts copied to clipboard
NPE in GMLHandler.startElement when parsing strategy is unknown
The following line will return null if there is an unknown tag in a GML file:
https://github.com/locationtech/jts/blob/master/modules/core/src/main/java/org/locationtech/jts/io/gml2/GMLHandler.java#L215
When qName == "ogr:FeatureCollection" (a tag added by the GML export function in QGIS), This causes the following NPE. (Maybe QGIS is outputting GMLv3? Still, this probably shouldn't crash JTS...)
Exception in thread "main" java.lang.NullPointerException
at org.locationtech.jts.io.gml2.GMLHandler$Handler.create(GMLHandler.java:107)
at org.locationtech.jts.io.gml2.GMLHandler.endElement(GMLHandler.java:203)
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1714)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2879)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:532)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
at org.locationtech.jts.io.gml2.GMLReader.read(GMLReader.java:115)
at gis.Main.main(Main.java:21)
GMLHandler only handles GML Geometry elements. In other words, GML fragments, not entire GML documents. Can't say for sure without seeing the input causing the error, but it sounds like this might be the cause of the error?
Either way, failing with a NullPointerException if you reach an unsupported tag while parsing a flexible-format XML element tree is not a great idea...
Perhaps not. Need to indicate somehow that the input is outside normal operating parameters, however. What do you suggest?
In this case, I would probably catch the case where ps == null after the if statement block, and at least throw new IllegalArgumentException("The element " + qName + " is not supported"). Libraries should never through an NPE.
I'm not sure we need to indicate there are unexpected XML elements. I'm reminded of the "Robustness Principle" -- https://en.wikipedia.org/wiki/Robustness_principle which is "Be conservative in what you send, be liberal in what you accept"
AKA Postel's Law... Yes, agreed, irrelevant items could be skipped silently.
@lukehutch Just so it's clear what the issue is, can you post the GML that exhibits the problem?
Thanks. So it looks like the problem is what I mentioned earlier - the GMLReader does not handle parsing full documents, only GML fragments for Geometry. So this is so far outside the operating conditions of the code I don't think it makes much differeence what happens when this error is encountered.
In other words, unless you know for sure that a GML Geometry is being provided as input, there is no point in calling the GMLReader. The NPE is actually alerting you of this fact. I agree that some other exception might be slighly more informative, but it's not going to provide any more functionality than already exists.
In contrast, if this was a question of ignoring additional elements or attributes within the Geometry, that makes good sense, and would actually expand the range of acceptable inputs. (Note that it may actually work this way - unfortunately the unit tests are broken right now, so it's hard to test this)
I tried GMLReader with input containing extra attributes, and it just ignores them. So this case is handled currently.
<gml:MultiLineString srsName="EPSG:4269" foo="bar"><gml:lineStringMember><gml:LineString><gml:coordinates>1,1 2,2</gml:coordinates></gml:LineString></gml:lineStringMember></gml:MultiLineString>
Right, the current NPE is not caused by unknown attributes, it's caused by unknown element tags. Getting an NPE from a library is very jarring :-) I'd much rather see a different exception type -- and also an explanation of what went wrong.
However, in keeping with Postel's Law -- in spite of the fact that JTS doesn't support whole GML documents, shouldn't it just pull out the GML fragments it knows how to process, and ignore the rest? In doing so, it would automatically handle (usably large subsets of) whole GML docs.
There is possibly a use case for scraping the geometries out of GML docs. It sounds like this is your use case, in fact?
But AFAIK the most common use case for GML is to encode features - where the attributes are as important as the geometry. The geometry is of no use if the attributes are not attached. And sadly reading GML collections and attributes involves either grokking a schema or a bunch of guesswork. Not to mention that JTS has nowhere to put them (except perhaps a Hashmap in the userData).
And BTW I am in total sympathy with the desire for an easy way to read GML. It's been a thorn in my side ever since it emerged. I"m just not sure that JTS is the right place to solve that problem. A library has to draw the line somewhere on functionality, lest it become unmaintainable.
@dr-jts well sure, but by definition you would only be loading data into JTS in the first place if you care about the geometry in the GML file! You can just put a disclaimer on the import API that all the attribute info will be dropped. That's actually no problem anyway, as long as you don't lose the feature ids, since you can always add the attributes back later to the post-processed geometries, using a join in QGIS or similar.
I suggest that this be provided as a new class GMLDocumentReader. Should be fairly easy to develop.
After reviewing the GMLReader in a bit more detail, I think it would be reasonable to simply extend it with the ability to parse arbitrary XML elements. For non-GML geometry elements all it would do is to recurse into the element and continue parsing the contents. This should allow parsing out all GML geometries in an XML file.
Well here's a fine kettle of fish. I whipped up an enhancement to the GMLReader to parse any old XML and extract the geometries. Code here: https://github.com/dr-jts/jts/tree/gmlreader-doc-parse
But... the test GML file contains a boundingBox element (as they do). The GMLHandler claims to parse Box elements, but in fact fails because it tries to cast an Envelope to a Geometry. And in any case, including the BBox as part of the output set is probably not what is wanted (since there is no way to tell if it is a data item or not).
Solutions include:
- GMLHandler should certainly be fixed. Can either drop Box support, or convert them to geometry
- The GMLReader should probably skip boundingBoxes (and this can be made optional via flag)
Other ideas welcome.
hi all, I'm here for the same reason. Same stackatrace posted by @lukehutch . I'm using version 1.18.1 I also believe that NPE should never be thrown. Either silent ignore unsupported tags or throw a parse exception.
Here the fragment I'm trying to parse:
<gml:MultiSurface xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:eop="http://www.opengis.net/eop/2.1"
xmlns:om="http://www.opengis.net/om/2.0"
xmlns:ows="http://www.opengis.net/ows/2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:eu="http://www.eumetsat.int/sentinel"
xmlns:eum="http://www.eumetsat.int/eop/1.0"
gml:id="multisurface"
srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="polygon1">
<gml:exterior>
<gml:LinearRing>
<gml:posList>75.474 130.468 75.013 130.449 74.552 130.428 74.090 130.403 73.629 130.376 73.168 130.346 72.707 130.315 72.245 130.281 71.784 130.246 71.322 130.209 70.861 130.170 70.399 130.130 69.937 130.089 69.476 130.046 69.014 130.002 68.552 129.957 68.090 129.911 67.629 129.863 67.167 129.815 66.705 129.766 66.243 129.716 65.781 129.665 65.319 129.614 64.857 129.561 64.395 129.508 63.933 129.455 63.470 129.400 63.008 129.345 62.546 129.290 62.083 129.234 61.621 129.177 61.158 129.120 60.696 129.062 60.233 129.004 59.771 128.945 59.308 128.886 58.846 128.827 58.383 128.767 57.921 128.706 57.458 128.645 56.995 128.584 56.531 128.522 56.068 128.461 55.605 128.398 55.142 128.335 54.679 128.272 54.216 128.209 53.753 128.145 53.289 128.081 52.826 128.017 52.363 127.952 51.900 127.887 51.436 127.821 50.973 127.756 50.509 127.690 50.045 127.624 49.581 127.557 49.118 127.490 48.654 127.423 48.190 127.356 47.726 127.288 47.262 127.220 46.798 127.152 46.334 127.083 45.870 127.014 45.406 126.945 44.942 126.876 44.478 126.806 44.013 126.736 43.549 126.666 43.084 126.596 42.620 126.525 42.155 126.454 41.690 126.383 41.226 126.311 40.761 126.239 40.296 126.167 39.832 126.095 39.367 126.022 38.902 125.949 38.438 125.876 37.973 125.803 37.508 125.729 37.043 125.655 36.578 125.581 36.113 125.506 35.647 125.432 35.182 125.357 34.717 125.281 34.251 125.206 33.786 125.130 33.321 125.054 32.855 124.977 32.390 124.901 31.925 124.824 31.459 124.746 30.994 124.669 30.529 124.591 30.063 124.513 29.597 124.434 29.131 124.355 28.665 124.276 28.200 124.197 27.734 124.117 27.268 124.037 26.802 123.957 26.336 123.876 25.870 123.795 25.405 123.714 24.939 123.633 24.473 123.551 24.007 123.468 23.542 123.386 23.076 123.303 22.609 123.220 22.143 123.136 21.677 123.052 21.211 122.968 20.745 122.883 20.279 122.798 19.813 122.713 19.346 122.627 18.880 122.541 18.414 122.455 17.949 122.368 17.483 122.281 17.017 122.193 16.551 122.105 16.085 122.017 15.618 121.928 15.152 121.838 14.686 121.749 14.220 121.659 13.753 121.568 13.287 121.477 12.821 121.386 12.355 121.294 11.889 121.202 11.423 121.110 10.958 121.017 10.492 120.923 10.026 120.829 9.561 120.735 9.095 120.640 8.628 120.544 8.162 120.448 7.696 120.352 7.231 120.255 6.765 120.157 6.299 120.059 5.833 119.961 5.368 119.862 4.902 119.762 4.437 119.662 3.972 119.562 3.506 119.461 3.041 119.359 2.576 119.257 2.111 119.154 1.646 119.050 1.180 118.946 0.715 118.841 0.250 118.736 -0.215 118.630 -0.680 118.523 -1.145 118.416 -1.609 118.308 -2.074 118.199 -2.538 118.090 -3.003 117.980 -3.467 117.870 -3.931 117.758 -4.395 117.646 -4.859 117.533 -5.323 117.420 -5.787 117.305 -6.251 117.190 -6.715 117.074 -7.179 116.958 -7.642 116.840 -8.106 116.722 -8.569 116.603 -9.032 116.483 -9.495 116.362 -9.958 116.240 -10.420 116.118 -10.882 115.994 -11.345 115.870 -11.807 115.744 -12.270 115.618 -12.732 115.491 -13.194 115.362 -13.656 115.233 -14.117 115.103 -14.579 114.971 -15.040 114.839 -15.501 114.706 -15.962 114.571 -16.423 114.435 -16.883 114.299 -17.343 114.161 -17.803 114.022 -18.263 113.881 -18.723 113.740 -19.183 113.597 -19.642 113.453 -20.101 113.307 -20.561 113.161 -21.019 113.012 -21.478 112.863 -21.936 112.712 -22.394 112.560 -22.852 112.406 -23.309 112.251 -23.766 112.095 -24.223 111.936 -24.680 111.777 -25.136 111.615 -25.592 111.452 -26.049 111.288 -26.504 111.121 -26.960 110.953 -27.415 110.783 -27.870 110.611 -28.324 110.438 -28.779 110.262 -29.232 110.085 -29.686 109.906 -30.139 109.724 -30.591 109.541 -31.043 109.356 -31.495 109.168 -31.947 108.978 -32.398 108.786 -32.849 108.592 -33.300 108.395 -33.750 108.195 -34.200 107.994 -34.649 107.790 -35.098 107.583 -35.546 107.373 -35.994 107.161 -36.441 106.946 -36.888 106.729 -37.334 106.508 -37.779 106.285 -38.224 106.058 -38.669 105.829 -39.113 105.596 -39.557 105.359 -40.000 105.120 -40.443 104.877 -40.885 104.630 -41.326 104.380 -41.766 104.126 -42.206 103.868 -42.645 103.607 -43.084 103.341 -43.521 103.071 -43.958 102.797 -44.394 102.519 -44.830 102.236 -45.264 101.949 -45.698 101.657 -46.131 101.360 -46.563 101.058 -46.995 100.750 -47.425 100.438 -47.854 100.120 -48.283 99.797 -48.710 99.468 -49.136 99.133 -49.561 98.792 -49.985 98.445 -50.408 98.091 -50.830 97.731 -51.250 97.364 -51.669 96.990 -52.087 96.609 -52.504 96.220 -52.919 95.823 -53.333 95.419 -53.745 95.007 -54.156 94.586 -54.565 94.156 -54.973 93.718 -55.378 93.270 -55.782 92.813 -56.185 92.347 -56.585 91.870 -56.983 91.383 -57.380 90.885 -57.774 90.376 -58.166 89.855 -58.556 89.323 -58.943 88.779 -59.329 88.222 -59.711 87.652 -60.091 87.069 -60.469 86.472 -60.843 85.861 -61.215 85.235 -61.583 84.595 -61.948 83.939 -62.310 83.266 -62.669 82.578 -63.024 81.872 -63.376 81.149 -63.723 80.408 -64.067 79.648 -64.407 78.870 -64.742 78.072 -65.073 77.253 -65.399 76.415 -65.720 75.555 -66.036 74.673 -66.347 73.770 -66.653 72.844 -66.953 71.894 -67.247 70.922 -67.535 69.925 -67.816 68.904 -68.091 67.858 -68.359 66.787 -68.620 65.691 -68.874 64.569 -69.120 63.421 -69.358 62.248 -69.588 61.049 -69.810 59.824 -70.023 58.573 -70.227 57.297 -70.421 55.997 -70.606 54.671 -70.781 53.322 -70.946 51.949 -71.101 50.555 -71.245 49.138 -71.378 47.701 -71.500 46.245 -71.610 44.771 -71.709 43.281 -71.797 41.776 -71.872 40.258 -71.936 38.729 -71.987 37.190 -72.026 35.644 -72.052 34.093 -72.066 32.537 -72.068 30.981 -72.057 29.425 -72.034 27.872 -71.999 26.325 -71.951 24.783 -71.891 23.251 -71.819 21.730 -71.734 20.221 -71.639 18.727 -71.531 17.249 -71.412 15.788 -71.282 14.346 -71.141 12.923 -70.989 11.522 -70.827 10.144 -70.655 8.788 -70.473 7.456 -70.281 6.148 -70.079 4.865 -69.869 3.607 -69.650 2.375 -69.422 1.169 -69.186 -0.011 -68.942 -1.166 -68.690 -2.294 -68.431 -3.398 -68.165 -4.476 -67.892 -5.528 -67.612 -6.556 -67.326 -7.560 -67.033 -8.539 -66.735 -9.495 -66.431 -10.427 -66.121 -11.337 -65.806 -12.225 -65.487 -13.090 -65.162 -13.935 -64.832 -14.759 -64.498 -15.562 -64.160 -16.346 -63.817 -17.111 -63.471 -17.857 -63.120 -18.585 -62.766 -19.295 -62.408 -19.988 -62.047 -20.665 -61.682 -21.326 -61.315 -21.971 -60.944 -22.601 -60.570 -23.216 -60.193 -23.816 -59.814 -24.403 -59.432 -24.976 -59.048 -25.537 -58.661 -26.084 -58.272 -26.620 -57.880 -27.143 -57.487 -27.656 -57.091 -28.157 -56.693 -28.647 -56.293 -29.127 -55.891 -29.596 -55.487 -30.056 -55.082 -30.506 -54.674 -30.947 -54.266 -31.379 -53.856 -31.802 -53.444 -32.217 -53.030 -32.623 -52.616 -33.021 -52.199 -33.412 -51.782 -33.796 -51.363 -34.172 -50.943 -34.541 -50.521 -34.903 -50.098 -35.258 -49.674 -35.607 -49.249 -35.950 -48.823 -36.287 -48.396 -36.617 -47.968 -36.942 -47.539 -37.261 -47.109 -37.575 -46.678 -37.884 -46.246 -38.187 -45.814 -38.485 -45.380 -38.779 -44.946 -39.067 -44.510 -39.351 -44.074 -39.631 -43.637 -39.906 -43.199 -40.177 -42.761 -40.444 -42.322 -40.707 -41.882 -40.966 -41.442 -41.220 -41.001 -41.472 -40.559 -41.719 -40.117 -41.963 -39.674 -42.204 -39.230 -42.441 -38.786 -42.674 -38.342 -42.905 -37.896 -43.133 -37.451 -43.357 -37.004 -43.578 -36.557 -43.797 -36.110 -44.013 -35.662 -44.226 -35.214 -44.436 -34.765 -44.643 -34.316 -44.848 -33.867 -45.050 -33.417 -45.250 -32.966 -45.447 -32.516 -45.643 -32.065 -45.835 -31.613 -46.026 -31.161 -46.214 -30.708 -46.400 -30.255 -46.584 -29.802 -46.766 -29.348 -46.946 -28.894 -47.124 -28.440 -47.300 -27.986 -47.474 -27.531 -47.646 -27.077 -47.817 -26.621 -47.985 -26.166 -48.152 -25.710 -48.317 -25.253 -48.481 -24.797 -48.642 -24.340 -48.803 -23.883 -48.961 -23.425 -49.118 -22.968 -49.274 -22.510 -49.428 -22.051 -49.581 -21.593 -49.732 -21.135 -49.882 -20.676 -50.030 -20.217 -50.177 -19.758 -50.323 -19.299 -50.467 -18.839 -50.610 -18.379 -50.752 -17.919 -50.893 -17.459 -51.032 -16.998 -51.171 -16.538 -51.308 -16.077 -51.444 -15.615 -51.579 -15.154 -51.713 -14.693 -51.845 -14.231 -51.977 -13.770 -52.107 -13.308 -52.237 -12.846 -52.365 -12.384 -52.493 -11.922 -52.620 -11.460 -52.745 -10.997 -52.870 -10.534 -52.994 -10.071 -53.117 -9.608 -53.238 -9.145 -53.360 -8.682 -53.480 -8.218 -53.599 -7.755 -53.718 -7.291 -53.835 -6.828 -53.952 -6.364 -54.068 -5.900 -54.184 -5.436 -54.298 -4.972 -54.412 -4.508 -54.525 -4.044 -54.637 -3.579 -54.749 -3.115 -54.860 -2.650 -54.970 -2.185 -55.079 -1.720 -55.188 -1.255 -55.296 -0.790 -55.404 -0.326 -55.511 0.139 -55.617 0.604 -55.722 1.069 -55.827 1.534 -55.931 1.999 -56.035 2.465 -56.138 2.930 -56.241 3.396 -56.343 3.861 -56.444 4.327 -56.545 4.793 -56.645 5.259 -56.745 5.725 -56.844 6.191 -56.943 6.656 -57.041 7.122 -57.138 7.587 -57.235 8.053 -57.332 8.519 -57.428 8.985 -57.523 9.451 -57.618 9.917 -57.713 10.383 -57.807 10.849 -57.901 11.316 -57.994 11.782 -58.087 12.248 -58.179 12.715 -58.271 13.181 -58.363 13.647 -58.453 14.113 -58.544 14.579 -58.634 15.045 -58.724 15.511 -58.813 15.977 -58.902 16.444 -58.991 16.910 -59.079 17.376 -59.166 17.842 -59.254 18.309 -59.341 18.775 -59.427 19.242 -59.514 19.708 -59.599 20.174 -59.685 20.640 -59.770 21.106 -59.855 21.572 -59.939 22.038 -60.023 22.504 -60.107 22.971 -60.190 23.437 -60.273 23.903 -60.356 24.369 -60.438 24.835 -60.520 25.301 -60.602 25.767 -60.683 26.234 -60.764 26.700 -60.845 27.166 -60.925 27.631 -61.005 28.097 -61.085 28.563 -61.164 29.029 -61.244 29.494 -61.322 29.960 -61.401 30.426 -61.479 30.891 -61.557 31.357 -61.635 31.823 -61.712 32.289 -61.789 32.754 -61.866 33.220 -61.943 33.686 -62.019 34.151 -62.095 34.616 -62.171 35.082 -62.246 35.547 -62.321 36.012 -62.396 36.477 -62.470 36.942 -62.545 37.407 -62.619 37.872 -62.692 38.338 -62.766 38.803 -62.839 39.268 -62.912 39.733 -62.985 40.198 -63.057 40.663 -63.129 41.128 -63.201 41.592 -63.273 42.057 -63.344 42.521 -63.415 42.986 -63.486 43.450 -63.556 43.915 -63.627 44.379 -63.697 44.843 -63.766 45.308 -63.836 45.772 -63.905 46.237 -63.974 46.701 -64.043 47.165 -64.111 47.629 -64.179 48.093 -64.247 48.557 -64.314 49.021 -64.381 49.485 -64.448 49.948 -64.515 50.412 -64.581 50.876 -64.647 51.339 -64.713 51.803 -64.779 52.267 -64.844 52.730 -64.908 53.194 -64.973 53.657 -65.037 54.121 -65.101 54.584 -65.165 55.047 -65.228 55.510 -65.290 55.973 -65.353 56.436 -65.415 56.899 -65.477 57.362 -65.538 57.825 -65.599 58.288 -65.659 58.751 -65.720 59.214 -65.779 59.677 -65.838 60.139 -65.897 60.602 -65.956 61.065 -66.013 61.527 -66.071 61.990 -66.127 62.452 -66.184 62.914 -66.239 63.377 -66.294 63.839 -66.349 64.301 -66.403 64.763 -66.456 65.225 -66.508 65.688 -66.560 66.150 -66.611 66.612 -66.661 67.074 -66.711 67.536 -66.759 67.998 -66.806 68.460 -66.853 68.921 -66.898 69.383 -66.942 69.845 -66.985 70.306 -67.027 70.768 -67.068 71.230 -67.107 71.691 -67.144 72.153 -67.180 72.614 -67.214 73.076 -67.245 73.537 -67.275 73.998 -67.303 74.460 -67.328 74.921 -67.350 75.382 -67.370 75.844 -67.386 76.305 -67.398 76.766 -67.407 77.227 -67.411 77.688 -67.411 78.149 -67.405 78.610 -67.394 79.071 -67.375 79.532 -67.349 79.992 -67.314 80.453 -67.269 80.914 -67.212 81.374 -67.142 81.835 -67.057 82.296 -66.953 82.756 -66.828 83.216 -66.676 83.676 -66.493 84.136 -66.270 84.596 -65.997 85.055 -65.661 85.515 -65.243 85.974 -64.713 86.432 -64.030 86.889 -63.126 87.346 -61.887 87.800 -60.108 88.251 -57.372 88.695 -52.710 89.120 -43.342 89.482 -18.989 89.567 38.136 89.271 74.716 88.860 87.737 88.421 93.669 87.972 96.971 87.519 99.047 87.063 100.459 86.606 101.473 86.148 102.230 85.689 102.812 85.230 103.269 84.771 103.633 84.311 103.928 83.851 104.168 83.391 104.366 82.931 104.529 82.471 104.664 82.010 104.776 81.550 104.868 81.089 104.943 80.628 105.004 80.168 105.053 79.707 105.092 79.246 105.121 78.785 105.143 78.324 105.157 77.864 105.165 77.403 105.167 76.942 105.165 76.481 105.158 76.019 105.147 75.558 105.132 75.097 105.114 74.636 105.092 74.175 105.068 73.713 105.042 73.713 105.042 73.663 109.185 73.561 112.630 73.430 115.565 73.282 118.113 73.125 120.362 72.961 122.377 72.793 124.205 72.622 125.883 72.449 127.440 72.272 128.898 72.093 130.276 71.910 131.590 71.723 132.853 71.529 134.076 71.329 135.270 71.121 136.443 70.903 137.605 70.673 138.763 70.428 139.927 70.166 141.105 69.883 142.306 69.574 143.541 69.234 144.820 68.855 146.158 68.427 147.570 67.935 149.077 67.361 150.706 66.676 152.493 65.832 154.491 65.832 154.491 66.152 155.374 66.467 156.280 66.777 157.209 67.081 158.162 67.379 159.139 67.670 160.140 67.956 161.167 68.235 162.219 68.507 163.297 68.772 164.400 69.029 165.530 69.279 166.687 69.521 167.870 69.754 169.080 69.979 170.316 70.195 171.579 70.402 172.868 70.599 174.184 70.787 175.524 70.965 176.889 71.133 178.279 71.290 179.692 71.436 -178.873 71.571 -177.416 71.695 -175.940 71.807 -174.445 71.907 -172.933 71.996 -171.406 72.072 -169.865 72.136 -168.313 72.188 -166.750 72.227 -165.180 72.253 -163.605 72.267 -162.025 72.268 -160.445 72.256 -158.865 72.232 -157.289 72.195 -155.718 72.145 -154.154 72.083 -152.600 72.009 -151.057 71.922 -149.527 71.824 -148.013 71.713 -146.515 71.591 -145.036 71.458 -143.576 71.314 -142.138 71.158 -140.721 70.992 -139.328 70.816 -137.958 70.630 -136.613 70.434 -135.294 70.228 -134.001 70.014 -132.734 69.790 -131.493 69.558 -130.279 69.318 -129.092 69.069 -127.931 68.813 -126.797 68.549 -125.689 68.278 -124.607 68.000 -123.551 67.716 -122.520 67.425 -121.515 67.128 -120.534 66.825 -119.577 66.516 -118.644 66.202 -117.735 65.883 -116.848 65.558 -115.983 65.229 -115.140 64.895 -114.318 64.556 -113.516 64.213 -112.734 63.866 -111.972 63.515 -111.228 63.160 -110.503 62.802 -109.795 62.439 -109.105 62.074 -108.432 61.705 -107.775 61.333 -107.133 60.958 -106.507 60.581 -105.896 60.200 -105.300 59.817 -104.717 59.431 -104.147 59.042 -103.591 58.652 -103.047 58.258 -102.516 57.863 -101.997 57.465 -101.489 57.066 -100.992 56.664 -100.506 56.260 -100.030 55.855 -99.565 55.447 -99.109 55.039 -98.664 54.628 -98.227 54.216 -97.799 53.802 -97.381 53.387 -96.970 52.970 -96.568 52.552 -96.173 52.132 -95.787 51.711 -95.407 51.289 -95.035 50.865 -94.670 50.440 -94.312 50.014 -93.961 49.587 -93.616 49.159 -93.277 48.730 -92.944 48.300 -92.618 47.869 -92.297 47.437 -91.981 47.004 -91.671 46.570 -91.366 46.136 -91.067 45.700 -90.772 45.263 -90.482 44.826 -90.197 44.388 -89.916 43.949 -89.640 43.509 -89.369 43.068 -89.101 42.627 -88.838 42.186 -88.578 41.744 -88.323 41.301 -88.072 40.857 -87.824 40.413 -87.579 39.968 -87.339 39.523 -87.101 39.076 -86.867 38.630 -86.637 38.183 -86.409 37.735 -86.185 37.287 -85.963 36.838 -85.745 36.388 -85.529 35.939 -85.317 35.489 -85.107 35.039 -84.900 34.588 -84.695 34.137 -84.493 33.685 -84.294 33.233 -84.097 32.780 -83.902 32.327 -83.710 31.874 -83.520 31.420 -83.332 30.966 -83.147 30.511 -82.963 30.056 -82.782 29.601 -82.602 29.146 -82.425 28.690 -82.250 28.234 -82.077 27.778 -81.905 27.321 -81.735 26.865 -81.568 26.407 -81.402 25.950 -81.237 25.492 -81.075 25.034 -80.914 24.576 -80.754 24.117 -80.596 23.658 -80.440 23.199 -80.285 22.739 -80.132 22.280 -79.980 21.821 -79.830 21.361 -79.681 20.901 -79.534 20.441 -79.388 19.980 -79.243 19.519 -79.100 19.059 -78.958 18.597 -78.817 18.136 -78.677 17.674 -78.538 17.213 -78.401 16.751 -78.265 16.288 -78.130 15.826 -77.996 15.364 -77.864 14.902 -77.732 14.439 -77.602 13.977 -77.472 13.514 -77.344 13.051 -77.216 12.588 -77.090 12.125 -76.964 11.661 -76.840 11.198 -76.716 10.734 -76.594 10.270 -76.472 9.806 -76.351 9.342 -76.231 8.878 -76.112 8.414 -75.994 7.950 -75.877 7.486 -75.760 7.021 -75.645 6.557 -75.530 6.092 -75.416 5.628 -75.303 5.163 -75.190 4.698 -75.078 4.233 -74.967 3.768 -74.857 3.302 -74.747 2.837 -74.638 2.372 -74.530 1.906 -74.423 1.441 -74.316 0.976 -74.210 0.510 -74.104 0.045 -74.000 -0.420 -73.895 -0.886 -73.792 -1.351 -73.689 -1.817 -73.587 -2.283 -73.485 -2.749 -73.384 -3.214 -73.283 -3.680 -73.183 -4.147 -73.084 -4.613 -72.985 -5.079 -72.887 -5.544 -72.789 -6.010 -72.692 -6.476 -72.595 -6.942 -72.499 -7.408 -72.404 -7.874 -72.308 -8.340 -72.214 -8.806 -72.120 -9.272 -72.026 -9.738 -71.933 -10.204 -71.840 -10.670 -71.748 -11.137 -71.657 -11.603 -71.565 -12.069 -71.475 -12.535 -71.384 -13.001 -71.295 -13.467 -71.205 -13.933 -71.116 -14.398 -71.028 -14.864 -70.940 -15.330 -70.852 -15.796 -70.765 -16.262 -70.678 -16.728 -70.591 -17.194 -70.505 -17.660 -70.420 -18.127 -70.334 -18.593 -70.250 -19.059 -70.165 -19.524 -70.081 -19.990 -69.997 -20.455 -69.914 -20.921 -69.831 -21.386 -69.749 -21.852 -69.666 -22.318 -69.584 -22.783 -69.503 -23.249 -69.422 -23.714 -69.341 -24.180 -69.261 -24.646 -69.181 -25.111 -69.101 -25.577 -69.021 -26.042 -68.942 -26.507 -68.864 -26.972 -68.785 -27.437 -68.707 -27.902 -68.629 -28.367 -68.552 -28.832 -68.475 -29.297 -68.398 -29.762 -68.322 -30.227 -68.246 -30.692 -68.170 -31.156 -68.094 -31.621 -68.019 -32.086 -67.944 -32.551 -67.870 -33.016 -67.795 -33.480 -67.722 -33.944 -67.648 -34.408 -67.575 -34.872 -67.502 -35.336 -67.429 -35.800 -67.357 -36.265 -67.285 -36.729 -67.213 -37.193 -67.141 -37.657 -67.070 -38.121 -66.999 -38.585 -66.929 -39.048 -66.858 -39.512 -66.788 -39.976 -66.719 -40.439 -66.649 -40.903 -66.580 -41.366 -66.512 -41.829 -66.443 -42.292 -66.375 -42.755 -66.307 -43.218 -66.240 -43.682 -66.173 -44.145 -66.106 -44.608 -66.039 -45.071 -65.973 -45.533 -65.907 -45.996 -65.841 -46.459 -65.776 -46.922 -65.711 -47.384 -65.647 -47.846 -65.582 -48.309 -65.518 -48.771 -65.455 -49.233 -65.392 -49.695 -65.329 -50.157 -65.266 -50.619 -65.204 -51.081 -65.143 -51.543 -65.081 -52.005 -65.020 -52.467 -64.960 -52.929 -64.900 -53.391 -64.840 -53.852 -64.781 -54.314 -64.722 -54.775 -64.663 -55.236 -64.605 -55.697 -64.548 -56.159 -64.491 -56.620 -64.434 -57.081 -64.378 -57.542 -64.323 -58.003 -64.268 -58.464 -64.213 -58.925 -64.159 -59.386 -64.106 -59.846 -64.053 -60.307 -64.001 -60.768 -63.950 -61.228 -63.899 -61.689 -63.849 -62.149 -63.800 -62.609 -63.752 -63.069 -63.704 -63.530 -63.657 -63.990 -63.611 -64.450 -63.566 -64.910 -63.522 -65.370 -63.479 -65.830 -63.437 -66.290 -63.396 -66.750 -63.357 -67.210 -63.318 -67.669 -63.281 -68.129 -63.245 -68.588 -63.211 -69.048 -63.178 -69.507 -63.147 -69.967 -63.118 -70.426 -63.091 -70.885 -63.065 -71.345 -63.042 -71.804 -63.021 -72.263 -63.003 -72.722 -62.987 -73.181 -62.974 -73.640 -62.964 -74.099 -62.958 -74.558 -62.956 -75.017 -62.957 -75.476 -62.963 -75.934 -62.974 -76.393 -62.989 -76.851 -63.011 -77.310 -63.040 -77.768 -63.075 -78.227 -63.119 -78.685 -63.171 -79.143 -63.234 -79.601 -63.308 -80.059 -63.396 -80.517 -63.498 -80.975 -63.618 -81.433 -63.757 -81.890 -63.920 -82.348 -64.110 -82.805 -64.333 -83.262 -64.595 -83.718 -64.905 -84.175 -65.275 -84.631 -65.718 -85.086 -66.257 -85.541 -66.919 -85.995 -67.746 -86.447 -68.801 -86.898 -70.184 -87.346 -72.058 -87.790 -74.715 -88.227 -78.727 -88.648 -85.338 -89.036 -97.617 -89.326 -122.963 -89.369 -163.909 -89.127 165.754 -88.756 150.956 -88.340 143.266 -87.907 138.730 -87.465 135.787 -87.017 133.742 -86.567 132.249 -86.115 131.119 -85.661 130.238 -85.207 129.537 -84.752 128.970 -84.296 128.503 -83.840 128.115 -83.383 127.791 -82.926 127.516 -82.469 127.283 -82.012 127.085 -81.554 126.915 -81.097 126.770 -80.639 126.646 -80.181 126.539 -79.723 126.448 -79.265 126.371 -78.807 126.305 -78.349 126.250 -77.891 126.204 -77.432 126.166 -76.974 126.136 -76.515 126.113 -76.056 126.095 -75.598 126.083 -75.139 126.076 -74.680 126.073 -74.221 126.075 -73.763 126.080 -73.304 126.089 -72.845 126.101 -72.386 126.116 -71.927 126.134 -71.468 126.154 -71.009 126.177 -70.549 126.202 -70.090 126.228 -69.630 126.257 -69.171 126.288 -68.712 126.320 -68.252 126.354 -67.792 126.389 -67.333 126.426 -66.873 126.464 -66.413 126.503 -65.954 126.544 -65.494 126.586 -65.034 126.629 -64.574 126.672 -64.114 126.717 -63.654 126.763 -63.194 126.809 -62.734 126.857 -62.273 126.905 -61.813 126.954 -61.353 127.004 -60.892 127.054 -60.432 127.105 -59.971 127.157 -59.510 127.210 -59.050 127.263 -58.589 127.316 -58.129 127.371 -57.668 127.426 -57.207 127.481 -56.746 127.537 -56.285 127.593 -55.823 127.650 -55.362 127.707 -54.901 127.765 -54.439 127.824 -53.978 127.882 -53.517 127.942 -53.055 128.001 -52.594 128.061 -52.132 128.122 -51.670 128.183 -51.209 128.244 -50.747 128.305 -50.285 128.367 -49.823 128.430 -49.361 128.492 -48.899 128.555 -48.436 128.619 -47.974 128.683 -47.512 128.747 -47.049 128.811 -46.587 128.876 -46.124 128.941 -45.662 129.007 -45.199 129.073 -44.737 129.139 -44.274 129.205 -43.811 129.272 -43.349 129.339 -42.885 129.406 -42.422 129.474 -41.959 129.542 -41.496 129.611 -41.032 129.679 -40.569 129.748 -40.105 129.817 -39.642 129.887 -39.178 129.957 -38.715 130.027 -38.251 130.097 -37.788 130.168 -37.324 130.239 -36.861 130.311 -36.397 130.382 -35.933 130.454 -35.468 130.527 -35.004 130.599 -34.540 130.672 -34.076 130.745 -33.611 130.819 -33.147 130.893 -32.683 130.967 -32.218 131.041 -31.754 131.116 -31.289 131.191 -30.825 131.267 -30.360 131.342 -29.896 131.418 -29.431 131.494 -28.966 131.571 -28.501 131.648 -28.036 131.725 -27.571 131.803 -27.106 131.881 -26.641 131.959 -26.176 132.038 -25.711 132.117 -25.245 132.196 -24.780 132.276 -24.315 132.356 -23.850 132.436 -23.385 132.517 -22.920 132.598 -22.455 132.679 -21.989 132.761 -21.523 132.843 -21.057 132.925 -20.592 133.008 -20.126 133.091 -19.660 133.175 -19.195 133.259 -18.729 133.343 -18.263 133.428 -17.798 133.513 -17.332 133.599 -16.866 133.684 -16.401 133.771 -15.935 133.857 -15.470 133.944 -15.003 134.032 -14.537 134.120 -14.071 134.208 -13.605 134.297 -13.139 134.387 -12.673 134.476 -12.207 134.566 -11.741 134.657 -11.275 134.748 -10.810 134.840 -10.344 134.931 -9.878 135.024 -9.412 135.117 -8.947 135.210 -8.481 135.304 -8.015 135.399 -7.549 135.493 -7.083 135.589 -6.617 135.685 -6.151 135.781 -5.685 135.878 -5.219 135.976 -4.753 136.074 -4.287 136.173 -3.822 136.272 -3.356 136.371 -2.891 136.472 -2.425 136.573 -1.960 136.674 -1.495 136.776 -1.029 136.879 -0.563 136.982 -0.098 137.086 0.368 137.191 0.833 137.296 1.299 137.402 1.764 137.509 2.229 137.616 2.694 137.724 3.159 137.833 3.624 137.942 4.089 138.052 4.553 138.163 5.018 138.274 5.482 138.386 5.947 138.499 6.412 138.613 6.876 138.728 7.341 138.843 7.805 138.960 8.270 139.077 8.734 139.194 9.198 139.313 9.661 139.433 10.125 139.553 10.589 139.675 11.052 139.797 11.515 139.920 11.978 140.044 12.441 140.169 12.905 140.295 13.368 140.422 13.831 140.551 14.293 140.680 14.756 140.810 15.218 140.941 15.681 141.073 16.143 141.207 16.605 141.341 17.066 141.477 17.528 141.614 17.989 141.752 18.450 141.891 18.911 142.032 19.371 142.173 19.832 142.316 20.293 142.461 20.753 142.606 21.214 142.753 21.674 142.902 22.133 143.052 22.593 143.203 23.052 143.355 23.511 143.510 23.970 143.665 24.428 143.823 24.886 143.981 25.344 144.142 25.801 144.304 26.259 144.467 26.716 144.633 27.173 144.800 27.630 144.969 28.086 145.140 28.543 145.313 28.998 145.488 29.454 145.664 29.909 145.843 30.364 146.023 30.818 146.206 31.272 146.391 31.726 146.578 32.179 146.767 32.632 146.958 33.084 147.152 33.536 147.348 33.988 147.547 34.440 147.748 34.891 147.952 35.342 148.158 35.792 148.367 36.242 148.579 36.691 148.794 37.139 149.011 37.588 149.231 38.035 149.455 38.482 149.681 38.929 149.910 39.375 150.143 39.820 150.379 40.265 150.619 40.710 150.862 41.154 151.109 41.597 151.359 42.040 151.613 42.482 151.871 42.923 152.133 43.363 152.399 43.803 152.669 44.242 152.944 44.680 153.223 45.118 153.506 45.554 153.795 45.990 154.087 46.425 154.385 46.859 154.688 47.293 154.997 47.725 155.310 48.157 155.630 48.587 155.954 49.017 156.285 49.445 156.622 49.872 156.965 50.298 157.314 50.723 157.670 51.147 158.032 51.569 158.402 51.991 158.778 52.411 159.162 52.829 159.554 53.246 159.954 53.662 160.361 54.077 160.777 54.490 161.202 54.901 161.636 55.310 162.078 55.718 162.531 56.124 162.993 56.528 163.464 56.931 163.947 57.331 164.440 57.729 164.944 58.125 165.459 58.519 165.986 58.910 166.526 59.300 167.078 59.686 167.643 60.071 168.221 60.452 168.813 60.831 169.419 61.207 170.040 61.580 170.676 61.950 171.328 62.316 171.995 62.679 172.680 63.039 173.381 63.395 174.100 63.747 174.837 64.096 175.593 64.440 176.368 64.780 177.163 65.116 177.978 65.447 178.814 65.773 179.672 66.094 -179.449 66.410 -178.547 66.721 -177.622 67.026 -176.673 67.026 -176.673 67.914 -178.645 68.638 179.577 69.247 177.946 69.769 176.427 70.225 174.995 70.630 173.631 70.994 172.320 71.326 171.049 71.630 169.806 71.913 168.582 72.177 167.366 72.426 166.151 72.662 164.928 72.888 163.687 73.106 162.420 73.316 161.117 73.521 159.765 73.720 158.354 73.916 156.867 74.109 155.287 74.299 153.594 74.486 151.761 74.669 149.756 74.848 147.537 75.020 145.049 75.180 142.221 75.321 138.952 75.428 135.102 75.474 130.468</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>