PostGIS Format – Understanding the Internal Format of PostGIS

formatgeohashpostgis

PostGIS stores its geometry entities as long strings:

SELECT ST_GeomFromText('POINT(32.0 34.0)',4326);
                  st_geomfromtext
----------------------------------------------------
 0101000020E610000000000000000040400000000000004140

For nearby points like (32.0 34.0) and (32.01 34.01), the string has a common prefix 0101000020E6100000 which might suggest a suggest a geohash technique:

SELECT ST_GeomFromText('POINT(32.01 34.01)',4326);
                  st_geomfromtext
----------------------------------------------------
 0101000020E6100000E17A14AE47014040E17A14AE47014140

Any idea what is the storage format of PostGIS geometries?

Best Answer

It is not a string format. It is a binary format using integers, double precission and special bytes used for flags.

What you see as output above is not the internal format but the wkb format represented as hex numbers

The internal format is described here: http://trac.osgeo.org/postgis/browser/trunk/liblwgeom/g_serialized.txt

The document is written before postgis 2.0 when g-serialized also is used for the geometey type. But as far as I know it is the same.