[Talk-de] Sortieren von Polygonen aus Relationen für Osmosis

Lars Francke lars.francke at gmail.com
Mi Nov 12 15:13:59 UTC 2008


Hallo,

> Diese Relation enthält unter anderen 4 Ways, welche die Gemeinde Grenze
> beschreibt.
> zu sehen auf dem Bild
> http://artbanause.de/admin_gleichen.jpg (rot umrandet)
>
> Nur wenn ich die 4 Ways an ein aneinander hänge, beschreiben die nicht das
> Polygon, sondern eine zickzack Grenze.
>
> ich habe mir geholfen in dem ich die ways so aneinander, im Editor, kopiert
> habe, das immer zwei  gleiche nodes aufeinander folgen.
> Da war es nötig in einem way die Richtung zu ändern. Und der letzte way in der
> Relation musste an Stelle 2.
>
> Nun suche ich ein tool, welches mir diese Arbeit abnimmt...
> ... ich kann's ja auch

in diesem Falle (wo die ways alle zusammenpassen und so lässt sich das
sehr einfach mit PostGIS machen. Ich weiß, dass das nicht fuer jeden
eine Option ist aber falls es jemanden interessiert:

Die Relation mit name=Gemeinde Gleichen war die mit der Id 31605, dann
habe ich einfach folgendes gemacht:
SELECT AsText(ST_polygonize(line)) FROM ways, relation_members WHERE
member_type=2 AND member_id=id AND relation_id=31605

Das ST_polygonize probiert aus allen uebergebenen Geometrien ein oder
mehrere Polygone zu erstellen. In diesem Falle klappt das ganz
wunderbar:

"GEOMETRYCOLLECTION(POLYGON((10.0539056 51.5355199,10.0569079
51.5356384,10.0561234 51.5318018,10.0542602 51.5312379,10.0546035
51.528529,10.0531203 51.526911,10.0532796 51.5248885,10.0520539
51.5244962,10.0516494 51.5229273,10.0568098 51.5207945,10.0653605
51.523963,10.0655638 51.5249034,10.0698085 51.5261997,10.0691985
51.5275722,10.0741294 51.5285889,10.0744599 51.5266318,10.0785266
51.5252847,10.086711 51.528106,10.0861772 51.5261997,10.0827967
51.522565,10.0810429 51.5227684,10.0795179 51.5218533,10.0779166
51.5217008,10.0762391 51.5188033,10.0751461 51.518117,10.0745615
51.5163378,10.0763916 51.5152703,10.083788 51.5144315,10.0860755
51.5182949,10.0880581 51.5187779,10.0910319 51.5187016,10.0927349
51.5182187,10.0966237 51.5148636,10.1027239 51.5150923,10.1080361
51.5161345,10.1132212 51.524878,10.1169321 51.524878,10.1206939
51.5243697,10.1205668 51.5227938,10.1218122 51.5214467,10.1213293
51.5203791,10.1219647 51.5189304,10.1246336 51.5184983,10.1265398
51.51982,10.138003 51.52226,10.1393247 51.5217008,10.1405193
51.5207604,10.1422731 51.5200233,10.1495171 51.5200233,10.1522113
51.5194133,10.1513471 51.5180662,10.15122 51.5153211,10.1501271
51.5133131,10.1504829 51.5114323,10.1520588 51.5112289,10.1550326
51.509348,10.152135 51.5078738,10.15183 51.5050779,10.1505592
51.5044171,10.1444844 51.5028921,10.1426798 51.4993336,10.1395281
51.4985203,10.1406464 51.4935893,10.1410785 51.4911747,10.147382
51.4892938,10.1513725 51.4857354,10.1535584 51.48571,10.1544734
51.4834224,10.1536092 51.4800419,10.1533805 51.4785169,10.1535076
51.4773223,10.1524655 51.4759243,10.1471278 51.4744501,10.145069
51.471095,10.1445099 51.4683754,10.1500508 51.4674095,10.1554139
51.4660624,10.1561256 51.4679433,10.1605227 51.4700784,10.1643862
51.4694175,10.1658604 51.4678416,10.1735618 51.4663166,10.1791028
51.467562,10.1843254 51.4668964,10.1902648 51.4668576,10.1903446
51.4631357,10.1844849 51.4594458,10.1845761 51.4557262,10.1787962
51.4483145,10.178876 51.4445949,10.1729343 51.4446382,10.1609665
51.4484375,10.1610463 51.444718,10.1550248 51.4484763,10.1433055
51.441117,10.1433853 51.4373859,10.1613768 51.429826,10.1435562
51.4299354,10.1375347 51.433696,10.1374459 51.4374269,10.1256445
51.433778,10.1197962 51.430095,10.1138545 51.4301269,10.113777
51.4338578,10.1078353 51.4338874,10.0958653 51.4376868,10.0840753
51.4340356,10.0842463 51.4265874,10.0783843 51.4229157,10.0784755
51.4191779,10.0725361 51.4192167,10.0723651 51.4266671,10.0595404
51.4289426,10.0604524 51.4331456,10.0599667 51.435208,10.0565707
51.4366006,10.0563184 51.4359926,10.0557774 51.4351947,10.0528108
51.4348595,10.0525319 51.4339392,10.0537498 51.4324796,10.0535073
51.4314071,10.0522625 51.4293102,10.0487054 51.4230889,10.0368266
51.4231459,10.030976 51.419456,10.0250457 51.4194879,10.0130643
51.4232553,10.0130397 51.4229011,10.0092305 51.4197414,10.0055442
51.4172839,9.9999796 51.417319,10.0005589 51.4216899,10.0103539
51.4228836,10.0224135 51.4288344,10.0216235 51.4318361,10.0148477
51.4319238,10.0138823 51.4332053,10.0085985 51.4351011,10.0051404
51.4348027,10.0018578 51.433293,10.0025249 51.4318185,10.0008046
51.4313095,9.9996812 51.4317483,9.9954331 51.4300982,9.9917292
51.4298525,9.9881834 51.4325558,9.9919574 51.4392438,9.9919223
51.4408939,9.9933969 51.4447557,9.9972412 51.4480208,9.9995232
51.4487405,9.9995758 51.4497235,9.9933618 51.4516193,9.9915186
51.4552705,9.9875865 51.4508294,9.9802841 51.4510225,9.9781601
51.4545859,9.97242 51.4571137,9.9708752 51.4570435,9.9692602
51.4576403,9.9696289 51.4591499,9.9687687 51.4601681,9.9590263
51.4577807,9.9547269 51.4632999,9.9565385 51.4639602,9.9562591
51.4669485,9.9546845 51.4671178,9.9538803 51.4685908,9.955675
51.4693019,9.9553194 51.4707748,9.9536094 51.4703516,9.9488011
51.4704786,9.9468371 51.4694712,9.9406489 51.468523,9.9350194
51.4685484,9.9352395 51.4695474,9.9421726 51.4704362,9.9437441
51.4704373,9.9470165 51.4719586,9.9546185 51.4720974,9.9576849
51.4712732,9.9588996 51.4722077,9.9587361 51.4749875,9.9597098
51.4762932,9.9574793 51.4811328,9.9576821 51.4829173,9.9551922
51.4844336,9.9554083 51.4878231,9.9570348 51.4896089,9.9620281
51.491224,9.9653948 51.4913605,9.9654403 51.4930894,9.9677493
51.4952277,9.9709909 51.4964106,9.9720487 51.4955007,9.9737548
51.4965585,9.9754875 51.5011488,9.9766581 51.5022146,9.9774151
51.5038335,9.9797504 51.5050273,9.9792612 51.5056446,9.9804492
51.5074732,9.9843335 51.50745,9.9876355 51.5096746,9.9913888
51.509628,9.9994312 51.510309,10.0000978 51.5113669,10.0014455
51.5152939,10.0050827 51.5180327,10.0020976 51.5208149,10.0051696
51.5212642,10.0079229 51.5199165,10.0204576 51.5209888,10.0201192
51.5282001,10.0227875 51.5301472,10.0359848 51.5301472,10.0388694
51.5315535,10.0503358 51.530616,10.0539056 51.5355199)))"

Das setzt allerdings voraus, dass man eine zusätzliche Spalte (im
Vergleich zum Osmosis-Schema) erstellt. In meinem Falle heißt die
"line" und ist eine LINESTRING-Spalte welche halt einen Linestring des
jeweiligen Ways beinhaltet. Das dauert zwar zu berechnen (vor allem
fuer den planet) aber ist dann sehr hilfreich.

Gruß,
Lars




Mehr Informationen über die Mailingliste Talk-de