| 26 | |
| 27 | * Make geography a 3D aware thing, so cart2geog / geog2cart takes third coordinate into account; |
| 28 | * Make a new index tuple format, that can be keep srid, small geometry fully (so index-only scan may return it already), and convex/concave/multi-geometry that covers original but has constant known number of nodes; |
| 29 | * Zealous geometry operations, that retry a failing geometry operation using a next backend library, and opt-in-ally automagically reporting robustness-related errors to some upstream; |
| 30 | * osm2topology converter, and make sure postgis topology is able to represent whatever's found in OSM data, and that data is useful for both rendering and routing; |
| 31 | * Allow more dimensions than 4D, so we can store directly a thing that comes from GPS (heading, speed, timestamp[system/gps/server], accuracy, some external node id) and do perform math over it; |
| 32 | * support for S2 geometry cells, and have a look at making a fast ST_Intersects GIN index on geography using them; |
| 33 | * recheck on GIST operators, so that ST_Intersects has no chance to not inline; |
| 34 | * ST_AsGeoJSON/GeomFromGeoJSON that are aware of json/jsonb types. So, geometry::json is ST_AsGeoJSON(geometry). A documented function to turn a table into GeoJSON FeatureCollection, automagically finding the geometry field; |
| 35 | * Spatial clustering: GeometricMedioid, KMedioids, XMeans, and then combine them into non-existing XMedioids with flexible exit conditions ("max cluster radius is", "max cluster diameter is", "max number of clusters is"); |
| 36 | * A way to store SRID and type in typmod only, so that 2D point columns take just 2*sizeof(double). |
| 37 | |
| 38 | If some tweaks in postgres allowed in our experiment: |
| 39 | * faster GiST index creation, that would order geometry by spatial adjacency and then just take chunks and turn them into index pages, instead of checking each tuple with each index page box; |
| 40 | * keeping a CLUSTER index clustered by getting a next candidate page for tuple insertion not from free space map, but from index sibling tuples, and inserting to the new page if they're full. |