On 10/19/2015 5:50 AM, Sven Geggus wrote:
Hello,

looking at the code of osm2pgsql and checking with a hand-crafted .osm file
I came to the conclusion that polygons in osm2pgsql are handled in the
following way:

If a polygon is defined in the .style file a function is called which
generates the simple-feature geometry object.  If this function is unable to
generate a polygon a linestring is created.

Am I right in this assumption?

For the osm2pgsql pgsql backend, a polygon is formed when a way is closed and the tag transform sets a polygon flag. If either of these is false, it is a linear feature. For the C tag transforms*, the polygon flag is set when there is a tag which has a polygon flag set, or phstore which is equivalent to polygon,nocolumn

For the multi-backend, see https://github.com/openstreetmap/osm2pgsql/issues/270. This issue also contains some information about the pgsql backend.

The reason for this question is that I'm trying to build a imposm3 style
which will create a osm2pgsql compatible database.  This has (among other
things) the obvous advantage, that some additional tables for more exotic
features are easy to create.

osm2pgsql has the capability to arbitrarily convert tags, for example unit conversions, normalize yes/no/unknown values, transliterate values, use other PostgreSQL types, and perform other logic. When I looked at imposm3, it didn't have the capability to take a script. Has this changed?

Even if not using custom tag transforms, the osm2pgsql C tag transforms do perform some tag manipulation.

* They still get called the C tag transforms, even though osm2pgsql is C++ now

_______________________________________________
dev mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/dev

Reply via email to