Oracle uses non-standary WKB type numbers for curves. 

https://docs.oracle.com/cd/B19306_01/appdev.102/b14373/constant-values.html

Instead of the preamble looking liks this (hex WKB)

00 - big endian
00000009 - compound curve
00000007 - 7 elements
00 - big endian
00000002 - linestring
00000002 - two vertices
...etc...

it looks like this

00 - big endian
000f4242 - 1000002, the oracle number for compound curve
00000007 - 7 elements
- wait, missing the endian flag, so not propertly recursive???
00000002 - linestring
00000002 - two vertices
...etc...

So the Oracle thing is just radically non-standard.
I'm concerned that PostGIS doesn't yell loudly when fed that content though, 
since the type number is so very wrong.

P

> On Aug 31, 2020, at 6:32 AM, Bjornar Skinnes <[email protected]> 
> wrote:
> 
> ORACLE:
> 
> SELECT
> SDO_UTIL.TO_WKTGEOMETRY(
> SDO_UTIL.FROM_WKBGEOMETRY( utl_encode.base64_decode( utl_raw.cast_to_raw(
> 'AAAPQkIAAAAHAAAAAgAAAAJAuSqxaGHpKUDWw+D1vl2eQLoaUGI9C/pA1u9vKwIM
> SgAPQkEAAAADQLoaUGI9C/pA1u9vKwIMSkC6HrsUzOUkQNbwSP7Se+xAuiLzdKuj
> h0DW8TI9bHIZAAAAAgAAAAJAuiLzdKujh0DW8TI9bHIZQLpXJeNDMNdA1v0dwo9c
> KQAPQkEAAAAnQLpXJeNDMNdA1v0dwo9cKUC6WybbyQ4ZQNb+BKY8A89Aul8c7YCh
> e0DW/u6HJtBOQLpk+rFrJEpA1wBUU5HjCEC6arpeJHiFQNcBwdsenydAunBb6JKT
> JUDXAzhOLRnaQLp12RZ2ZApA1wS3S8an8EC6ezEgsDl7QNcGP+biTj1AuoBd86V+
> qkDXB9Gp++dtQLqA3EPQVPFA1wf5K2Vt2UC6gVocm0E6QNcIIMSXdCVAuoYEjAQb
> VEDXCY3zcGUYQLqKhmZVn29A1wsDMy8BdUC6kpqGPzW/QNcN3SxRP81AupoMCCBf
> 8kDXENJN0vGqQLqeHJ9RoWBA1xKaMibdEUC6ofU/bCaaQNcUacq8UVVAuqWXUucS
> MEDXFj+9C9L0QLqpBeNDMNdA1xgb1wo9cUC6rEJbEIK0QNcZ/MAJx1JAuq9QYj0L
> +kDXG+J++dsjQLqxV0BKwU1A1x03hf6ZjEC6s0o9X9zfQNcejmZiNKhAurZqQ8g0
> 40DXIRcKU1/9QLq5Tpd8iOhA1yOkGI9C/0C6u1/Fd+ZDQNclmlZmwjRAur1T974S
> H0DXJ5Jul41QQLq/LNcIRnVA1ymKdTRLU0C6wO8ajvd/QNcrg8an755AusKcb6yn
> OkDXLXyaShfnQLrEOZmI0qJA1y92RZ2ZA0C6xciwGLncQNcxbv7SdDFAusdOFGoa
> UEDXM2gxJul5QLrIy9pTlG5A1zVgHa8r1EC6ykZmVZ9vQNc3WDEm6XlAusq1W5sG
> g0DXN+yNARO0QLrLJJuVHFxA1ziA5VwPy0C6zcSQv+MyQNc6x73DdrJAutIQYj0L
> +kDXPORqesgdAAAAAgAAAAJAutIQYj0L+kDXPORqesgdQLrfhqfe1rtA10IyXjU/
> fQAPQkEAAAAFQLrfhqfe1rtA10IyXjU/fUC66RUfs2M1QNdHOKu8CEJAuuj4k2P1
> c0DXTMj1vl2eQLrnxFDOkblA107FGgOkQ0C659N0q6OHQNdQxwo9cKQAAAACAAAA
> A0C659N0q6OHQNdQxwo9cKRAuvscKOT7mEDXW+2yKNyYQLsk07Y02tNA12xBJuVH
> Fw=='
> )))) FROM DUAL;
> 
> Give as expected:
> COMPOUNDCURVE (LINESTRING (6442.692999 23311.514999, 6682.313999 23485.737), 
> CIRCULARSTRING (6682.313999 23485.737, 6686.73078613848 23489.140553113, 
> 6690.950999 23492.784999), LINESTRING (6690.950999 23492.784999, 6743.147999 
> 23540.465), CIRCULARSTRING (6743.147999 23540.465, 6747.15179115862 
> 23544.0726461446, 6751.112999 23547.726999, 6756.97926969181 
> 23553.3176007001, 6762.727999 23559.028999, 6768.3590175256 23564.8797714951, 
> 6773.847999 23570.864, 6779.19190503505 23576.9984670414, 6784.366999 
> 23583.276, 6784.86040975641 23583.8932736943, 6785.351999 23584.511999, 
> 6790.01776147525 23590.21798334, 6794.524999 23596.049999, 6802.60361094534 
> 23607.4558299182, 6810.046999 23619.286, 6814.11180601301 23626.4093110236, 
> 6817.957999 23633.652999, 6821.59110874361 23640.9959134636, 6825.022999 
> 23648.435, 6828.25920203391 23655.9492210814, 6831.313999 23663.539, 
> 6833.34082476825 23668.8675533771, 6835.289999 23674.224999, 6838.41509677211 
> 23684.3600052297, 6841.306999 23694.563999, 6843.37410687801 23702.411523523, 
> 6845.327999 23710.288, 6847.17515613289 23718.1634035812, 6848.933999 
> 23726.059, 6850.61107901652 23733.9469170793, 6852.224999 23741.847999, 
> 6853.78393702066 23749.7343031058, 6855.304999 23757.628, 6856.79630014776 
> 23765.5018117836, 6858.274999 23773.378, 6858.70842904004 23775.6961062138, 
> 6859.142999 23778.013999, 6861.76783370301 23787.1209572467, 6866.063999 
> 23795.568999), LINESTRING (6866.063999 23795.568999, 6879.525999 23816.787), 
> CIRCULARSTRING (6879.525999 23816.787, 6889.08251496479 23836.8854818421, 
> 6888.970999 23859.139999, 6887.76685801561 23867.0797127823, 6887.825999 
> 23875.11), LINESTRING (6887.825999 23875.11, 6907.109999 23919.713999, 
> 6948.826999 23985.017999))
> 
> In postgres / postgis however:
> Select 
> ST_AsText(ST_GeomFromEWKB(ST_AsBinary(ST_GeomFromEWKB(decode('AAAPQkIAAAAHAAAAAgAAAAJAuSqxaGHpKUDWw+D1vl2eQLoaUGI9C/pA1u9vKwIM
> SgAPQkEAAAADQLoaUGI9C/pA1u9vKwIMSkC6HrsUzOUkQNbwSP7Se+xAuiLzdKuj
> h0DW8TI9bHIZAAAAAgAAAAJAuiLzdKujh0DW8TI9bHIZQLpXJeNDMNdA1v0dwo9c
> KQAPQkEAAAAnQLpXJeNDMNdA1v0dwo9cKUC6WybbyQ4ZQNb+BKY8A89Aul8c7YCh
> e0DW/u6HJtBOQLpk+rFrJEpA1wBUU5HjCEC6arpeJHiFQNcBwdsenydAunBb6JKT
> JUDXAzhOLRnaQLp12RZ2ZApA1wS3S8an8EC6ezEgsDl7QNcGP+biTj1AuoBd86V+
> qkDXB9Gp++dtQLqA3EPQVPFA1wf5K2Vt2UC6gVocm0E6QNcIIMSXdCVAuoYEjAQb
> VEDXCY3zcGUYQLqKhmZVn29A1wsDMy8BdUC6kpqGPzW/QNcN3SxRP81AupoMCCBf
> 8kDXENJN0vGqQLqeHJ9RoWBA1xKaMibdEUC6ofU/bCaaQNcUacq8UVVAuqWXUucS
> MEDXFj+9C9L0QLqpBeNDMNdA1xgb1wo9cUC6rEJbEIK0QNcZ/MAJx1JAuq9QYj0L
> +kDXG+J++dsjQLqxV0BKwU1A1x03hf6ZjEC6s0o9X9zfQNcejmZiNKhAurZqQ8g0
> 40DXIRcKU1/9QLq5Tpd8iOhA1yOkGI9C/0C6u1/Fd+ZDQNclmlZmwjRAur1T974S
> H0DXJ5Jul41QQLq/LNcIRnVA1ymKdTRLU0C6wO8ajvd/QNcrg8an755AusKcb6yn
> OkDXLXyaShfnQLrEOZmI0qJA1y92RZ2ZA0C6xciwGLncQNcxbv7SdDFAusdOFGoa
> UEDXM2gxJul5QLrIy9pTlG5A1zVgHa8r1EC6ykZmVZ9vQNc3WDEm6XlAusq1W5sG
> g0DXN+yNARO0QLrLJJuVHFxA1ziA5VwPy0C6zcSQv+MyQNc6x73DdrJAutIQYj0L
> +kDXPORqesgdAAAAAgAAAAJAutIQYj0L+kDXPORqesgdQLrfhqfe1rtA10IyXjU/
> fQAPQkEAAAAFQLrfhqfe1rtA10IyXjU/fUC66RUfs2M1QNdHOKu8CEJAuuj4k2P1
> c0DXTMj1vl2eQLrnxFDOkblA107FGgOkQ0C659N0q6OHQNdQxwo9cKQAAAACAAAA
> A0C659N0q6OHQNdQxwo9cKRAuvscKOT7mEDXW+2yKNyYQLsk07Y02tNA12xBJuVH
> Fw==', 'base64')))));
> 
> Gives something weird:
> LINESTRING(0 6442.692999,23311.514999 6682.313999,23485.737 0,6682.313999 
> 23485.737,6686.73078613848 23489.140553113,6690.950999 23492.784999,0 
> 6690.950999)
> 
> 
> _______________________________________________
> postgis-users mailing list
> [email protected]
> https://lists.osgeo.org/mailman/listinfo/postgis-users

_______________________________________________
postgis-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to