Last active
February 26, 2018 21:17
-
-
Save dbaston/58b883f6f78118ea2c85a55c447bc7b8 to your computer and use it in GitHub Desktop.
PostGIS geometry as binary
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| CREATE OR REPLACE FUNCTION geom2bin (geometry) | |
| RETURNS text AS $$ | |
| SELECT reverse(string_agg( | |
| CASE WHEN i > 0 AND mod(i, 8) = 0 THEN ' ' ELSE '' END || | |
| CASE | |
| WHEN chr = '0' THEN '0000' | |
| WHEN chr = '1' THEN '0001' | |
| WHEN chr = '2' THEN '0010' | |
| WHEN chr = '3' THEN '0011' | |
| WHEN chr = '4' THEN '0100' | |
| WHEN chr = '5' THEN '0101' | |
| WHEN chr = '6' THEN '0110' | |
| WHEN chr = '7' THEN '0111' | |
| WHEN chr = '8' THEN '1000' | |
| WHEN chr = '9' THEN '1001' | |
| WHEN chr = 'a' THEN '1010' | |
| WHEN chr = 'b' THEN '1011' | |
| WHEN chr = 'c' THEN '1100' | |
| WHEN chr = 'd' THEN '1101' | |
| WHEN chr = 'e' THEN '1110' | |
| WHEN chr = 'f' THEN '1111' | |
| END | |
| , '')) FROM | |
| (SELECT row_number() OVER() AS i, chr FROM | |
| (SELECT lower( | |
| regexp_split_to_table( | |
| reverse(encode( | |
| ST_AsBinary($1, 'XDR'), | |
| 'hex')), | |
| '')) chr) ssq | |
| ) sq | |
| $$ LANGUAGE sql; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment