[postgis-devel] wkb geometry type codes: PostGIS vs OGC

Paul Ramsey pramsey at cleverelephant.ca
Thu May 6 10:11:37 PDT 2010


My 2.0 WKB emitter is biased in favor of the ISO SQL/MM numbers for
core types and the ZM variants, but can output standard (well, our
bit-flagged extended standard) OGC as well. I see I'm going to have to
add a backwards mode too, to output pre-2.0 PostGIS WKB since it's not
quite as standard as I thought.

P.

On Thu, May 6, 2010 at 9:20 AM, Mark Cave-Ayland
<mark.cave-ayland at siriusit.co.uk> wrote:
> Paul Ramsey wrote:
>
>> Raven,
>>
>> Well, reading through the code base shows that you are, in fact,
>> correct. We are just relaying our internal type numbers out into the
>> WKB, the net effect being that we are producing non-standard WKB for
>>
>> #define CURVEPOLYTYPE    13 /*should be 10*/
>> #define MULTICURVETYPE   14 /*should be 11*/
>> #define MULTISURFACETYPE 15 /*should be 12*/
>>
>> So... where from here? My new WKB emitter for 2.0 is designed to
>> return the standard, correct, type numbers.
>>
>> What do you think, as a consumer of our... er... product. ?
>>
>> P
>
> Note that even these are also at odds with the SQL-MM specification too:
>
> <well-known binary representation>  <uint32> Value
> <wkbpoint>                          1 (one)
> <wkblinestring>                     2
> <wkbcircularstring>                 1000001
> <wkbcompoundcurve>                  1000002
> <wkbpolygon>                        3
> <wkbcurvepolygon>                   1000003
> <wkbmultipoint>                     4
> <wkbmulticurve>                     1000004
> <wkbmultilinestring>                5
> <wkbmultisurface>                   1000005
> <wkbmultipolygon>                   6
> <wkbgeometrycollection>             7
> <wkbpointzm>                        2000001
> <wkblinestringzm>                   2000002
> <wkbcircularstringzm>               2000003
> <wkbcompoundcurvezm>                2000004
> <wkbpolygonzm>                      2000005
> <wkbcurvepolygonzm>                 2000006
> <wkbmultipointzm>                   2000007
> <wkbmulticurvezm>                   2000008
> <wkbmultilinestringzm>              2000009
> <wkbmultisurfacezm>                 2000010
> <wkbmultipolygonzm>                 2000011
> <wkbgeometrycollectionzm>           2000012
> <wkbpointz>                         3000001
> <wkblinestringz>                    3000002
> <wkbcircularstringz>                3000003
> <wkbcompoundcurvez>                 3000004
> <wkbpolygonz>                       3000005
> <wkbcurvepolygonz>                  3000006
> <wkbmultipointz>                    3000007
> <wkbmulticurvez>                    3000008
> <wkbmultilinestringz>               3000009
> <wkbmultisurfacez>                  3000010
> <wkbmultipolygonz>                  3000011
> <wkbgeometrycollectionz>            3000012
> <wkbpointm>                         4000001
> <wkblinestringm>                    4000002
> <wkbcircularstringm>                4000003
> <wkbcompoundcurvem>                 4000004
> <wkbpolygonm>                       4000005
> <wkbcurvepolygonm>                  4000006
> <wkbmultipointm>                    4000007
> <wkbmulticurvem>                    4000008
> <wkbmultilinestringm>               4000009
> <wkbmultisurfacem>                  4000010
> <wkbmultipolygonm>                  4000011
> <wkbgeometrycollectionm>            4000012
>
> So which way do we want to do? I'd be more inclined to head towards SQL/MM
> rather than OGC. I guess if we're going to change this, 2.0 is the time to
> do it.
>
>
> ATB,
>
> Mark.
>
> --
> Mark Cave-Ayland - Senior Technical Architect
> PostgreSQL - PostGIS
> Sirius Corporation plc - control through freedom
> http://www.siriusit.co.uk
> t: +44 870 608 0063
>
> Sirius Labs: http://www.siriusit.co.uk/labs
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-devel
>



More information about the postgis-devel mailing list