Why ORA-13449
Hi all,
I have a rather simple parcel geometry that would not pass the SDO_GEOM.VALIDATE_GEOMETRY test at the desired tolerance of 50 unit (0.05 foot). We examined its vertice and fail to find any two vertice that were less than 50 unit apart. In fact, the closes two vertice was 4500 unit (4.5 feet) apart.
When I lowered the tolerance to 40, the geometry passed the validate test.
Could someone help explain? Thank you in advance!
Bo Guo
Maricopa County Assessor's Office
Phoenix, AZ
602-506-0930
P.S
In case you want to try the geometry, you may create the following files by cutting-&-pasting the content underneath each file heading. Then run at the system prompt (DOS) IMPORT.BAT usr/pass@connectionstring.
**************** ORA13449.DAT ********
501|2003| |pt||||1|1003|1|;636235753|866562682|636180753|866562527|636181062|866452527|636256061|866452738|636236033|866462681|636235921|866502682|636235795|866547682|636235753|866562682|:||||
**************** ORA13449.PRE ********
CREATE TABLE ORA13449 (
ID NUMBER(10,0),
SPATIALAREA MDSYS.SDO_GEOMETRY,
APN VARCHAR2(12),
FLOOR NUMBER(10,0),
DGN VARCHAR2(12),
SOURCE_CD VARCHAR2(2), primary key (ID) );
Exit;
**************** ORA13449.POS ********
insert into USER_SDO_GEOM_METADATA values('ORA13449', 'SPATIALAREA' ,MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 232850000, 993600000, 50), MDSYS.SDO_DIM_ELEMENT('Y', 526000000, 1134000000, 50)), NULL );
Commit;
Exit;
**************** ORA13449.CTL ********
LOAD DATA
INFILE 'ORA13449.Dat'
APPEND INTO TABLE ORA13449
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
ID,
SPATIALAREA COLUMN OBJECT
( sdo_gtype INTEGER EXTERNAL,
sdo_srid INTEGER EXTERNAL,
isnull FILLER CHAR,
SDO_POINT COLUMN OBJECT NULLIF SPATIALAREA.isnull="pt"
( X INTEGER EXTERNAL,
Y INTEGER EXTERNAL,
Z INTEGER EXTERNAL),
SDO_ELEM_INFO VARRAY terminated by ';'
(SDO_ORDINATES char(38)),
SDO_ORDINATES VARRAY terminated by ':'
(SDO_ORDINATES char(38))) ,
APN,
FLOOR,
DGN,
SOURCE_CD )
**************** IMPORT.BAT********
@echo off
REM Copyright (c) 1999-2002 by Intergraph Corporation. All Rights Reserved.
Rem Use this script to create tables and metadata with PL/SQL and populate tables with SQL*Loader.
if "%1"=="" goto usage
SQLPLUS %1 @"ORA13449.PRE"
SQLLDR %1 CONTROL='ORA13449'
SQLPLUS %1 @"ORA13449.POS"
goto end
: usage
@echo Syntax of the command is: "Import <username>/<password>@<ConnectString>"
echo Examples:
echo Import scott/tiger@db_orcl
: end
pause