Oracle Spatial column in OWB

Does OWB 10g (10.1) supports Oracle Spatial Columns?
eg: SDO_GEOMETRY column
As far as i know timestamp datatype is not supported by OWB. Can anybody list out the unsupported datatypes by OWB?
Thanks in advance.
Sathish K

I am not sure if OWB 10g R1 supports Oracle Spatial Data Type. This spatial data type is a problem in many ETL tools.
I had come across a situation where it was needed to migrate spatial data from legacy databases. If OWB does not support then what can be done is to call a stored procedure in the mapping and pass the input parameters and let the procedure handle the inserts/updates/deletes, whatever you feel like.
This way you give all the control of data loading to the database, but this is the only way that I can think of.
Do let me know if you could find a smarter way of doing this.
Regards
-Arnab

Similar Messages

  • Loading shapefiles into Oracle Spatial

    Fellow Oracle Spatiallers!
    Currently we edit Oracle Spatial data by checking data out into a shapefile,
    making our changes off-line, and reloading the shapefile back into Oracle.
    Instead of using the Oracle Spatial supplied tool, we decided to purchase
    a utility called the "Spatial Loader" from a company called Geometry Pty Ltd
    (http://www.geometryit.com). There are a number of reasons why we decided to
    go that way which might become evident from the command line parameters of
    this utility:
    Usage: Shp2Spt [Arguments] [Options]
    OR
    Usage: Java com.geometryit.spatialloader.oracle.AdvancedJavaSpatialTranslator [Arguments] [Options]
    [Arguments] must specify these values:
    -o create
    type of operation to perform
    create creates a new table, must not exist already
    recreate creates a new table, may exist already
    init drops existing table, creates a new one
    append appends data onto existing table
    -f <shape_file>
    the shape file or project to translate
    -l <table,column>
    target table and column for the geometry data
    -D <database>
    target database name
    -u <username>
    username for RDBMS
    -p <password>
    password for RDBMS
    [Options] values are not necessarily required:
    -s <server_name>
    name of server with database
    -port <port_number>
    the port to connect to on the server
    -ufi <column_name>
    specify the name of the UFI field (unique ID)
    -seq <sequence_name>
    specify the sequence to use for the spatial data unique IDs
    -a none
    attributes mode
    none no attributes will be transferred
    all all attribtues will be transfered as found
    file= file containing lines of the form:
    <shape_attribute><space/tab><rdbms_column>
    where
    <shape_attribute> selects the column to be output
    <rdbms_column> name of the column in RDBMS
    -srid <id>
    specify the Spatial Reference ID for the spatial data
    (this must be set to use Spatial Reference Transformations)
    -i [<level>] or -i rtree
    create an index for the generated table
    the <level> parameter is an optional integer
    representing the depth of the quadtree created
    if rtree is specified, the index created will be
    an rtree
    -c <commit_interval>
    number of rows to commit after
    -t <tolerance>
    tolerance value for metadata
    -r none
    used to determine number of decimal places to round vertices to
    if you use the tolerance-parameter option, specify the -t parameter before -r
    -igc
    ignore geometry collections
    -sgc
    split geometry collections
    -sgd f
    split geometry direction [forward | reverse]
    -update-metadata <true/false>
    update the Oracle Spatial Metadata table after loading data
    -validate <true/false>
    perform Oracle Spatial validation after loading data
    -v
    verbose mode on
    -h or -?
    display this help message
    The main things I like about this tool are:
    1. One step (no conversion to sqlloader form followed by a call to the sqlloader).
    2. The ability to round the coordinates of the shapes in the shapefile by applying
    the XY tolerance values held in the SDO_GEOM_METADATA table.
    This is quite important because our editing package - due to double/single precision
    issues - can actually move coordinates but those movements are sub the precision of
    the actual data. By rounding to the nominate precision we can detect situations where
    no actual change to the shape (and its attributes) was made and thus not create superfluous
    revisions within the database.
    3. It will correctly re-wind the coordinates of the outer/inner shells of polygons. This is
    important as ESRI shapefiles are agnostic on the winding order: an outer shell coordinates
    can be listed in either clockwise or anti-clockwise order.
    4. You can specify the primary key (UFI) column (numeric) and an Oracle Sequence number such
    that each new shape loaded can have its UFI assigned from that sequence.
    Because of this flexibility, and the excellent support (it is a purchasable product) from the
    developers, I can heartily recommend this loader to fellow Spatiallers. It is worth every
    penny I spent on it. Try the free version on their website and if, like me, you like it,
    purchase it!
    regards
    Simon

    Hi Shuan,
    As part of the zip file created for the next training course to be posted for Oracle Spatial on OTN (within the next few weeks) there is a free (unsupported, undocumented) version of a shape to sdo converter. This should work, but it is unsupported. It will create a layer that then needs to be migrated into 8.1.6 format.
    If you need it quite soon send email to [email protected] and I can get it to you.
    Hope this helps,
    dan

  • Oracle Spatial 8.1.7 r-tree indexes

    I don't think this problem is specific to r-tree indexes vs. quad-tree.
    Even though I specify a tablespace other than the SYSTEM tablespace in Oracle Spatial Index Advisor when creating r-tree indexes, the index is still created in the SYSTEM tablespace. I don't want my spatial indexes in the SYSTEM tablespace!
    select tablespace_name from user_indexes where index_name = 'GPS_IDX';
    TABLESPACE_NAME
    SYSTEM
    Here is the sql statement that Spatial Index Advisor constructed:
    create index gis.gps_idx on gis.gps (geometry) indextype is mdsys.spatial_index parameters ('sdo_indx_dims=2');
    I was not able to issue this sql from worksheet with the tablespace option added. Is there a way to do that?
    In Spatial Index Advisor, if I don't select the geometry column, then the sql is constructed with the tablespace option added, but when I select the geometry column, it removes it from the sql.
    Can anybody shed some light on how to do this?
    thanks
    Dave

    Spatial creates an index entry in the system tablespace but realy creates the spatial index in the tablespace you gave it. To verify it execute the select:
    select table_name,tablespace_name
    from user_tables
    where table_name like 'spatial_table%';
    It will return your table_name plus the spatial index table created for it.
    The table_name will look something like this:
    spatial_table_SX_FL10$.
    spatial_tables beeing your spatial table.
    You can query the same for the indexes built on that previous table.
    select index_name,tablespace_name
    from user_indexes
    where table_name = 'SPATIAL_TABLE_SX_FL10$';
    The two index names would look like:
    spatial_table_sx_fl10$B1
    spatial_table_sx_fl10$B2
    They should be created in the tablespace mentionned in your tablespace clause when creating the spatial index.
    Hope this helps

  • Oracle Spatial Performance with 10-20.000 users

    Does anyone have any experience when Oracle Spatial is used with say 20.000 concurrent users. I am not interested in MapViewer response time, but lets say there is:
    - an app using 800 different tables each having an sdo_geometry column
    - the app is configured with different tables visible on different view scales
    - let's say an average of 40-50 tables is visible at any given time
    - some tables will have only a few records, while other can hold millions.
    - there is no client side caching
    - clients can zoom in/out pan.
    Anwers I am interested in:
    - What sort of server would be required
    - How can Oracle serve all that data (each Refresh renders the map and retrieves the data over the wire as there is no client side caching).
    - What sort of network infrastructure would be required.
    - Can clients connect to different servers and hence use load balancing or does Oracle have an automatic mechanism for that?
    Thanks in advance,
    Patrick

    Patrick, et al.
    There are lots of things one can do to improve performance in mapping environments because of a lot of the visualisation is based on "background" or read-only data. Here are some "tips":
    1. Spatially sort read-only data.
    This tip makes sure that data that is close to each other in space are next to each other on disk! Dan gave a good suggestion when he referenced Chapter 14, "Reorganize the Table Data to Minimize I/O" pp 580- 582, Pro Oracle Spatial. But just as easily one can create a table as select ... where sdo_filter() where the filtering object is an optimized rectangle across the whole of the dataset. (This is quite quick on 10g and above but much slower on earlier releases.)
    When implementing this make sure that the created table is created such that its blocks are next to each other in the tablespace. (Consider tablespace defragmentation beforehand.) Also, if the data is READ ONLY set the PCTFREE to 0 in order to pack the data up into as small a number of blocks as possible.
    2. Generalise data
    Rendering spatial data can be expensive where the data is geometrically detailed (many vertices) esp where the data is being visualised at smaller scales than it was captured at. So, if your "zoom thresholds" allow 1:10,000 data to be used at 1:100,000 then you are going to have problems. Consider pre-generalising the data (see sdo_util.simplify) before deployment. You can add multiple columns to your base table to hold this data. Be careful with polygon data because generalising polygons that share boundaries will create gaps etc as the data is more generalised. Often it is better to export the data to a GIS which can maintain the boundary relationships when generalising (say via topological relationships).
    Oracle's MapViewer has excellent on-the-fly generalisation but here one needs to be careful. Application tier caching (cf Bryan's comments) can help here a lot.
    3. Don't draw data that is sub-pixel.
    As one zooms out objects become smaller and smaller until they reach a point where the whole object can be drawn within a single pixel. If you have control over your map visualisation application you might want to consider setting the SDO_FILTER parameter "min_resolution" flag dynamically so that its value is the same as the number of meters / pixel (eg min_resolution=10). If this is set Oracle Spatial will only include spatial objects in the returned search set if one side of a geometry's MBR is greater than or equal to this value. Thus any geometries smaller than a pixel will not be returned. Very useful for large scale data being drawn at small scales and for which no selection (eg identify) is required. With Oracle MapViewer this behaviour can be set via the generalized_pixels parameter.
    3. SDO_TOLERANCE, Clean Data
    If you are querying data other than via MBR (eg find all land parcels that touch each other) then make sure that your sdo_tolerance values are appropriate. I have seen sites where data captured to 1cm had an sdo_tolerance value set to a millionth of a meter!
    A corollary to this is make sure that all your data passes validation at the chosen sdo_tolerance value before deploying to visualisation. Run sdo_geom.validate_geometry()/validate_layer()...
    4. Rtree Spatial Indexing
    At 10g and above lots of great work went in to the RTree indexing. So, make sure you are using RTrees and not QuadTrees. Also, many GIS applications create sub-optimal RTrees by not using the additional parameters available at 10g and above.
    4.1 If your table/column sdo_geometry data contains only points, lines or polygons then let the RTree indexer know (via layer_gtype) as it can implement certain optimizations based on this knowledge.
    4.2 With 10g you can set the RTree's spatial index data block use via sdo_pct_free. Consider setting this parameter to 0 if the table/column sdo_geometry data is read only.
    4.3 If a table/column is in high demand (eg it is the most commonly used table in all visualisations) you can consider loading (a part of) the RTree index into memory. Now, with the RTree indexing, the sdo_non_leaf_tbl=true parameter will split the RTree index into its leaf (contains actual rowid reference) and non-leaf (the tree built on the leaves) components. Most RTrees are built without this so only the MDRT*** secondary tables are built. But if sdo_non_leaf_tbl is set to true you will see the creation of an additional MDNT*** secondary table (for the non_leaf part of the rtree index). Now, if appropriate, the non_leaf table can be loaded into memory via the following:
    ALTER TABLE MDNT*** STORAGE(BUFFER_AREA KEEP);
    This is NOT a general panacea for all performance problems. One should investigate other options before embarking on this (cf Tom Kyte's books such as Expert Oracle Database Architecture, 9i and 10g Programming Techniques and Solutions.)
    4.4 Don't forget to check your spatial index data quality regularly. Because many sites use GIS package GUI tools to create tables, load data and index them, there is a real tendency to not check what they have done or regularly monitor the objects. Check the SDO_RTREE_QUALITY column in USER_SDO_INDEX_METADATA and look for indexes with an SDO_RTREE_QUALITY setting that is > 2. If > 2 consider rebuilding or recreating the index.
    5. The rendering engine.
    Whatever rendering engine one uses make sure you try and understand fully what it can and cannot do. AutoDesk's MapGuide is an excellent product but I have seen it simply cache table/column data and never dynamically access it. Also, I have been at one site which was running Deegree and MapViewer and MapViewer was so fast in comparison to Deegree that I was called in to find out why. I discovered that Deegree was using SDO_RELATE(... ANYINTERACT ...) for all MBR queries while MapViewer was using SDO_FILTER. Just this difference was causing some queries to perform at < 10% of the speed of MapViewer!!!!
    6. Consider "denormalising" data
    There is an old adage in databases that is "normalise for edit, denormalise for performance". When we load spatial data we often get it from suppliers in a fairly flat or normalised form. In consort with spatial sorting, consider denormalising the data via aggregations based on a rendering attribute and some sort of spatial unit. For example, if you have 1 million points stored as single points in SDO_GEOMETRY.SDO_POINT which you want to render by a single attribute containing 20 values, consider aggregating the data using this attribute AND some sort of spatial BUCKET or BIN. So, consider using SDO_AGGR_UNION coupled with Spatial Analysis and Mining package functions to GROUP the data BY <<column_name>> and a set of spatial extents.
    6. Tablespace use
    Finally, talk to your DBA in order to find out how the oracle database's physical and logical storage is organised. Is a SAN being used or SAME arranged disk arrays? Knowing this you can organise your spatial data and indexes using more effective and efficient methods that will ensure greater scalability.
    7. Network fetch
    If your rendering engine (app server) and database are on separate machines you need to investigate what sort of fetch sizes are being used when returning data from queries to the middle-tier. Fetch sizes for attribute only data rows and rows containing spatial data can be, and normally are, radically different. Accepting the default settings for these sizes could be killing you (as could the sort_area_size of the Oracle session the application server has created on the database). For example I have been informed that MapInfo Pro uses a fixed value of 25 records per fetch when communicating with Oracle. I have done some testing to show that this value can be too small for certain types of spatial data. SQL Developer's GeoRaptor uses 100 which is generally better (but this one can modify this). Most programmers accept defaults for network properties when programming in ADO/ODBC/OLEDB/JDBC: just be careful as to what is being set here. (This is one of the great strengths of ArcSDE: its TCP/IP network transport is well written, tuneable and very efficient.)
    8. Physical Format
    Finally, while Oracle's excellent MapViewer requires data its spatial data to be in Oracle, other commercial rendering engines do not. So, consider using alternate, physical file formats that are more optimal for your rendering engine. For example, Google Earth Enterprise "compiles" all the source data into an optimal format which the server then serves to Google Earth Enterprise clients. Similarly, a shapefile on local disk to the application server (with spatial indexing) may be faster that storing the data back in Oracle on a database server that is being shared with other business databases (eg Oracle financials). If you don't like this approach and want to use Oracle only consider using a dedicated Oracle XE on the application server for the data that is read only and used in most of your generated maps eg contour or drainage data.
    Just some things to think about.
    regards
    Simon

  • Poor performance with Oracle Spatial when spatial query invoked remotely

    Is anyone aware of any problems with Oracle Spatial (10.2.0.4 with patches 6989483 and 7003151 on Red Hat Linux 4) which might explain why a spatial query (SDO_WITHIN_DISTANCE) would perform 20 times worse when it was invoked remotely from another computer (using SQLplus) vs. invoking the very same query from the database server itself (also using SQLplus)?
    Does Oracle Spatial have any known problems with servers which use SAN disk storage? That is the primary difference between a server in which I see this poor performance and another server where the performance is fine.
    Thank you in advance for any thoughts you might share.

    OK, that's clearer.
    Are you sure it is the SQL inside the procedure that is causing the problem? To check, try extracting the SQL from inside the procedure and run it in SQLPLUS with
    set autotrace on
    set timing on
    SELECT ....If the plans and performance are the same then it may be something inside the procedure itself.
    Have you profiled the procedure? Here is an example of how to do it:
    Prompt Firstly, create PL/SQL profiler table
    @$ORACLE_HOME/rdbms/admin/proftab.sql
    Prompt Secondly, use the profiler to gather stats on execution characteristics
    DECLARE
      l_run_num PLS_INTEGER := 1;
      l_max_num PLS_INTEGER := 1;
      v_geom    mdsys.sdo_geometry := mdsys.sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,45,45,90,0,135,45,180,0,180,-45,45,-45,0,0));
    BEGIN
      dbms_output.put_line('Start Profiler Result = ' || DBMS_PROFILER.START_PROFILER(run_comment => 'PARALLEL PROFILE'));  -- The comment name can be anything: here it is related to the Parallel procedure I am testing.
      v_geom := Parallel(v_geom,10,0.05,1);  -- Put your procedure call here
      dbms_output.put_line('Stop Profiler Result = ' || DBMS_PROFILER.STOP_PROFILER );
    END;
    SHOW ERRORS
    Prompt Finally, report activity
    COLUMN runid FORMAT 99999
    COLUMN run_comment FORMAT A40
    SELECT runid || ',' || run_date || ',' || run_comment || ',' || run_total_time
      FROM plsql_profiler_runs
      ORDER BY runid;
    COLUMN runid       FORMAT 99999
    COLUMN unit_number FORMAT 99999
    COLUMN unit_type   FORMAT A20
    COLUMN unit_owner  FORMAT A20
    COLUMN text        FORMAT A100
    compute sum label 'Total_Time' of total_time on runid
    break on runid skip 1
    set linesize 200
    SELECT u.runid || ',' ||
           u.unit_name,
           d.line#,
           d.total_occur,
           d.total_time,
           text
    FROM   plsql_profiler_units u
           JOIN plsql_profiler_data d ON u.runid = d.runid
                                         AND
                                         u.unit_number = d.unit_number
           JOIN all_source als ON ( als.owner = 'CODESYS'
                                   AND als.type = u.unit_type
                                   AND als.name = u.unit_name
                                AND als.line = d.line# )
    WHERE  u.runid = (SELECT max(runid) FROM plsql_profiler_runs)
    ORDER BY d.total_time desc;Run the profiler in both environments and see if you can see where the slowdown exists.
    regards
    Simon

  • Replicate Table with spatial columns

    I'd like to know how to
    replicate (updatable snapshot) a table
    with spatial columns.
    when i try to create a master repobject
    i've got ORA-23318 error.
    What can i do?
    null

    Hi Vincent,
    Oracle does not support replication of object in 8.1.6 or 8.1.7. I believe replication support is expected for the version after.
    Sorry,
    Dan

  • About oracle spatial

    Hi,
    I'm new to this oracle spatial.I want to use relational model of oracle spatial.In that I read that I need to create 4 tables(layer,dim,index,geom).And then I've to populate index table using sdo_admin.populate_index.But when I do this I'm getting error as "No data found".Actually I inserted one row in each table.Where can I find some examples regarding oracle spatial(relational model,not object relational) ?In technet.oracle.com/product/spatial I found samples but they use object relational model.
    Can any one help m with this ?
    Thank you.
    null

    Hi,
    Does anyone working with relational model of spatial ? If so please share some info .What is the better approach in creating SDOGEOM table .I know that I can create a table with all the coordinates as sepearte columns,when creating a polygon.Or I can use only x1,y1,x2,y2 columns and repeate them.Like
    GID x1 y1 x2 y2
    1 1 2 3 4
    1 3 4 5 6
    1 5 6 7 8
    1 7 8 1 2
    Some thing like the above.
    GID x1 y1 x2 y2 x3 y3 x4 y4 x1 y1
    What is the better approach ?Can any one help me ?
    TIA,
    KKR

  • Problem by adding one spatial column to the version-enabled table

    Hello, I'm trying to modify one version-enabled table T1 like this:
    --table definition
    create table T1
    (ID NUMBER NOT NULL PRIMARY KEY,
    NAME VARCHAR2 (256),
    FUNCTION VARCHAR2 (256));
    --enable versioning
    EXECUTE DBMS_WM.EnableVersioning('T1','VIEW_WO_OVERWRITE');
    I'd like to add one spatial column to this table by:
    -- modify metada view for spatial indexing
    INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
    VALUES ('T1_LT', 'ANCHOR',
    MDSYS.SDO_DIM_ARRAY
    (MDSYS.SDO_DIM_ELEMENT('X', 0.000, 100000.000, 0.0005),
    MDSYS.SDO_DIM_ELEMENT('Y', 0.000, 100000.000, 0.0005),
    MDSYS.SDO_DIM_ELEMENT('Z', -100, 1000, 0.0005)) , 81989002);
    -- table modification - add a column and create a spatial index
    EXECUTE DBMS_WM.BeginDDL('T1');
    ALTER TABLE T1_LTS ADD ("ANCHOR" MDSYS.SDO_GEOMETRY);
    CREATE INDEX T1_SPX on T1_LTS(ANCHOR) INDEXTYPE is MDSYS.SPATIAL_INDEX;
    EXECUTE DBMS_WM.CommitDDL('T1');
    By finishing of the DDL operation with EXECUTE DBMS_WM.CommitDDL('T1') I get an error message:
    "SQL> EXECUTE DBMS_WM.CommitDDL('T1');
    BEGIN DBMS_WM.CommitDDL('T1'); END;
    ERROR at line 1:
    ORA-20171: WM error: 'CREATE TABLE' and 'CREATE SEQUENCE' privileges needed.
    ORA-06512: at "SYS.WM_ERROR", line 342
    ORA-06512: at "SYS.WM_ERROR", line 359
    ORA-06512: at "SYS.LTUTIL", line 8016
    ORA-06512: at "SYS.LT", line 11925
    ORA-06512: at line 1
    What is wrong here? The Oracle 10g DB is installed on Windows 2003 Server, OWM_VERSION - 10.2.0.1.0.
    Regards,
    Viktor

    Hi,
    You need to explicitly grant the create table and create sequence privileges to the user owning the table. It is not enough for these to be granted by using a role. This restriction is documented in the user guide.
    Also, you should add the entry in the user_sdo_geom_metadata view on the t1_lts table, which is the table to which you are actually adding the geometry column, after calling beginDDL. CommitDDL will make the necessary changes, which in this case would be to add an entry for both t1 and t1_lt.
    Regards,
    Ben

  • Using Java oracle.spatial.util.SampleShapefileToJGeomFeature : ESRI SHP

    Hi,
    I am trying to import an ESRI shapefile using the Java class oracle.spatial.util. I have to add a remark, that I have set the classpath with the command
    set classpath=.;%ORACLE_HOME%\jdbc\lib\ojdbc14.jar
    I am using Oracle 11g and I don't have this file in the LIB library, only
    ojdbc5.jar
    ojdbc5dms.jar
    ojdbc5dms_g.jar
    ojdbc5_g.jar
    ojdbc6.jar
    ojdbc6dms.jar
    ojdbc6dms_g.jar
    ojdbc6_g.jar
    set classpath=.;%ORACLE_HOME%\md\jlib\sdoapi.jar (file exists)
    set classpath=.;%ORACLE_HOME%\md\jlib\sdoutl.jar (file exists)
    set classpath=.;%ORACLE_HOME%\lib\xmlparserv2.jar (file exists)
    java oracle.spatial.util.SampleShapefileToJGeomFeature -h nt-topobase -p 1521 -s ORCL -u rlv -d admin -t dkn -f KO_shp - 5000000 -g geom
    Exception in thread "main" java.lang.NoClassDefFoundError: oracle/spatial/util/S
    ampleShapefileToJGeomFeature
    Caused by: java.lang.ClassNotFoundException: oracle.spatial.util.SampleShapefile
    ToJGeomFeature
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    I am not sure, why I am getting those errors.

    hi,
    I dont know how to use the SampleShapefileToJGeomFeature Java Class. I have tried 2 syntax
    oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature -h http://localhost -p 1521 -s SIG -u my_user -d my_pass_word -t my_shape -f /home/oracle/perso/topo/my_shape -r 4326 -g geom
    Parameters:
    <Filename>: File name of an input Shapefile (without extension)
    <Table name>: Table name for the result
    \[SRID\]: Valid Oracle SRID for coordinate system; use 0 if unknown
    <ID Column name>: Column name for unique numeric ID; if required
    oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature /home/oracle/perso/topo/ma_couche ma_couche 2154 id_com
    Connecting to DB...
    java.sql.SQLException: Exception d'E/S: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at oracle.spatial.util.SampleShapefileToJGeomFeature.main(SampleShapefileToJGeomFeature.java:110)
    Dropping old table...
    Exception in thread "main" java.lang.NullPointerException
    at oracle.spatial.util.SampleShapefileToJGeomFeature.prepareTableForData(SampleShapefileToJGeomFeature.java:252)
    at oracle.spatial.util.SampleShapefileToJGeomFeature.main(SampleShapefileToJGeomFeature.java:129)
    Can you help me for the syntaxe oh the commande?
    Thanks! Regards.
    Ben.
    Edited by: user12240435 on Dec 15, 2009 12:59 AM

  • Accessing a legacy Oracle Spatial Database

    We have an Oracle 9i server with Spatial extensions. There are data tables with SDO_GEOMETRY columns. These tables contain information that is consumed by a legacy application that uses MapInfo MapX GIS control. MapInfo stores metadata info in a proprietary Oracle DB table. The standard Oracle Spatial metainfo tables are empty.
    What would be your recommendation for rescuing the geodata in the tables and generating the Oracle Spatial metainfo and being able to access the DB with Oracle Spatial-compatible tools like MapViewer?
    Can MapViewer access the data and generate what is missing in the DB?
    Thanks!
    Edited by: 921274 on Mar 15, 2012 5:52 PM

    Try connecting as SCOTT/TIGER, then do this:
    select * from user_sdo_geom_metadata;
    if the table does not exist, then spatial hasn't been installed
    if it does exist, then spatial (or locator) has been installed.
    If the table didn't exist, rerun the installer, choose a custom
    installation, and check the Spatial box, then install.
    If the table did exist, or after you install spatial, you'll want to
    use the user's guide, or take the spatial course to get started.

  • Oracle spatial table Versioning

    I have big prob.
    To keep history "Versioning" I'm enabling table Versioning. I need to alter table by add new fields but that's not possible if Versioning enable and if I close version history will lost.
    So how can I keep history and alter current table??

    Hi,
    Yes it is possible. Use client side script to get the coordinate from ArcIMS and insert into oracle table. Then write a trigger for update which should insert the point in spatial column. Create a spatial view of the point SDO_geomtry layer. Use the view in axl file. Hope this help.
    Kumar

  • MapInfo (MIF) to Oracle Spatial

    Has anyone ever worked on converting MapInfo Export files (MIF) to Oracle spatial? If so could you give me a step by step process on how to do this? I am interested in taking a point file and converting to oracle spatial.

    Richard. We successfully loaded geom data into the database with sqlldr using the Oracle script shp2sdo, which provided a set of sqlldr files. We also got a trial version for the FME Oracle suite and loaded directly into the database (OCI) from MID/MIF.
    I still wonder though, if and how you actually produced sqlldr .dat files with ordinates. Have you checked out the (in our list) one and only Sqlldr 'Attributes Only format' in the FME Dataset Format Gallery yet and is this the one you're using too?
    One question I have in using any of this features to convert MID/MIF to oracle, is how you get the Oracle geom types like '2007' for a multi polygon and such into the geom column. You do can specify all kinds of variables like SRID but no thing like SDO_GTYPE.

  • SDO_NN with Oracle Spatial

    Hello,
    although the description of my problem is a bit long, I hope you could help me.
    I would like to compute the nearest neighbor of a point being located on the surface of the unit sphere.
    For that query, I would like to take advantage of the features provided by Oracle Spatial (10g).
    Table spatial_test contains the columns point_name, x, y, z, ra, dec where:
    point_name is the primary key
    x, y, z are the coordinates of the points on the unit sphere (so x^2+y^2+z^2=1)
    ra, dec are the the concerning spherical coordinates where the following conditions hold: x=cos(dec)*cos(ra) , y=cos(dec)*sin(ra), z=sin(dec).
    For computing the nearest neighbor of a point with point_name='point1' the query without using Oracle Spatial is:
    select * from(
    select
    acos(t1.x*t2.x+t1.y*t2.y+t1.z*t2.z) as distance, t1.*
    from spatial_test t1,
    spatial_test t2
    where t2.point_name='point1'
    and t1.name != t2.name
    order by dist
    where rownum<2;
    For taking advantage of Oracle Spatial, I have to prepare my data doing the following five steps:
    1. add a column to of type SDO_GEOMETRY to table spatial_test
    2. insert values to that table
    3. update table user_sdo_geom_metadata
    4. create the spatial index
    5. execute the following query on the amended table spatial_test:
    SELECT t1.point_name name1, t2.point_name name2 FROM spatial_test t1, spatial_test t2
    WHERE SDO_NN(t2.geom, t1.geom, 'sdo_num_res=2') = 'TRUE'
    and t1.point_name = 'point1'
    and t1.point_NAME != t2.point_name
    As mentioned in the User Guide for Oracle Spatial, only two dimensional objects are supported.
    So, if I insert tuples in the following form to my table:
    insert into spatial_test (point_name, x, y, z, geom) values (..., ..., ..., ...,
    SDO_GEOMETRY(3001,
    NULL, --SDO_SRID is null, so no coordinate system is associated with the geometry
    SDO_POINT_TYPE(x_value, y_value, z_value),
    NULL,
    NULL));
    I won't get the correct results. I assume that the z_value is just ignored. Am I right with that assumption?
    For using Oracle Spatial, I have to use the equivalent just using two dimensions. Since ra, dec is another representation for x, y, z, I tried to do the same, just using ra and dec. But here, my results also differ from the ones computed with my own computation of the nearest neighbor.
    Here an minimal example which shows my problem:
    CREATE TABLE spatial_test(
    point_name varchar(20) PRIMARY KEY,
    x float,
    y float,
    z float,
    ra float,
    dec float,
    geom SDO_GEOMETRY);
    -- INSERT POINTS --
    insert into spatial_test(point_name, x, y, z, ra, dec, geom) values ('point1', -0.00472924, 0.110927216, 0.99381728, 92.44125, 83.62542,
    SDO_GEOMETRY(2001, -- 2 dimensions, last dimension is the measure, geometry type 01 = point
    NULL, --SDO_SRID is null, so no coordinate system is associated with the geometry
    SDO_POINT_TYPE(92.44125, 83.62542, null),
    NULL,
    NULL));
    insert into spatial_test(point_name, x, y, z, ra, dec, geom) values ('point2', -0.00239923, 0.112814014, 0.993613226, 91.21833, 83.52097,
    SDO_GEOMETRY(2001, -- 2 dimensions, last dimension is the measure, geometry type 01 = point
    NULL, --SDO_SRID is null, so no coordinate system is associated with the geometry
    SDO_POINT_TYPE(91.21833, 83.52097, null),
    NULL,
    NULL));
    insert into spatial_test(point_name, x, y, z, ra, dec, geom) values ('point3', -0.00701052, 0.122780703, 0.992409065, 93.26792, 82.93584,
    SDO_GEOMETRY(2001, -- 2 dimensions, last dimension is the measure, geometry type 01 = point
    NULL, --SDO_SRID is null, so no coordinate system is associated with the geometry
    SDO_POINT_TYPE(93.26792, 82.93584, null),
    NULL,
    NULL));
    -- UPDATA user_sdo_geom_metadata --
    INSERT INTO user_sdo_geom_metadata
    (TABLE_NAME,
    COLUMN_NAME,
    DIMINFO,
    SRID)
    VALUES (
    'spatial_test',
    'geom',
    MDSYS.SDO_DIM_ARRAY(
    MDSYS.SDO_DIM_ELEMENT('ra', 0.0, 360.0, 0.0000000000001),
    MDSYS.SDO_DIM_ELEMENT('dec', -90.0, 90.0, 0.0000000000001)
    NULL -- no specific coordinate system should be associated with the geometries.
    -- CREATE THE SPATIAL INDEX --
    CREATE INDEX spatial_test_idx
    ON spatial_test(geom)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX;
    Now I could execute the following queries which should both compute the nearest neighbor of 'point1'.
    This is the statement computing the nearest neighbor without Oracle Spatial:
    select * from(
    select
    acos(t1.x*t2.x+t1.y*t2.y+t1.z*t2.z) as distance, t2.point_name p1, t1.point_name p2
    from spatial_test t1,
    spatial_test t2
    where t2.point_name='point1'
    and t1.point_name != t2.point_name
    order by distance
    where rownum<2;
    RESULT:
    DISTANCE P1 P2
    ,003005107 point1 point2
    With the following statement, I compute the nearest neighbor of 'point1' using Oracle Spatial:
    SELECT t1.point_name name1, t2.point_name name2 FROM spatial_test t1, spatial_test t2
    WHERE SDO_NN(t2.geom, t1.geom, 'sdo_num_res=2') = 'TRUE'
    and t1.point_name = 'point1'
    and t1.point_NAME != t2.point_name;
    RESULT:
    NAME1 NAME2
    point1 point3
    As you see, unfortunately, the two results differ.
    Could you please tell me, what I understood wrong in using Oracle Spatial?
    In addition, what kind of coordinate system is assumed if it isn't specified in my SDO_GEOMETRY? Which kind of distance is computed using sdo_nn (euclidean distance, ...)?
    Would be glad, if you could tell how to reach the same results for my nearest neighbors using Oracle Spatial.
    Regards,
    Ina

    I would like to compute the nearest neighbor of a
    point being located on the surface of the unit
    sphere.That would be a spherical 3D computation. Currently, OS does not work well with 3D such as spheres, sorry. I know R2 was supposed to improve on this for cubes and pyramids, but to be honest; I haven’t had time to go back and test the simple cube operations. With 10gR1, for most of the operators and functions 2,2,3 and 2,2,5 are same point. I know this is something that is being worked on, possibly Dan can comment further.
    See for more info:
    Re: 3D Polygon
    For now, if you have your own routines, I’d use them as a package instead. If you need help there, let us know and we’ll try to point you in the right direction or help you to translate the code to PL/SQL.
    Bryan

  • Performance problem on view with spatial column - resolved

    I have had a problem with queries on a view that had a spatial column, where the view did not belong to the logged in user. Where my spatial window was retrieved by a sub-query, the spatial scan did a full table scan instead of using the spatial index.
    I have found that the problem can be resolved by granting MERGE VIEW on the view to the querying user.
    The view can be as simple as SELECT * FROM table.
    The badly performing query could be as simple as
    select id from T1.tstview
    where SDO_RELATE(coordinates,
    (SELECT coordinates FROM T1.tstWINDOW WHERE ID = '1')
    ,'mask=INSIDE+COVEREDBY querytype=WINDOW') = 'TRUE'  ;
    I think this is a bug, and have raised an SR - MERGE VIEW is supposed to override issues with the "security intent" of a view.
    The workaround is simple enough once you're aware of it and I thought it was worth passing on.

    Thanks for sharing this workaround!
    Which ORACLE version did you test ?

  • Cluster table with Spatial column

    Hi,
    I tried to create a spatial table(with one SDO_GEOMETRY column) with cluster on one attribute column. But I keep getting error ORA-03001: unimplemented feature.
    Is this mean that I can not cluster a table with SDO_GEOMETRY column?
    Thanks
    Helen

    Hi Helen,
    The parameter you mention is only for real application clusters, not for clustering columns of tables.
    As far as I can tell, when clustering columns of different tables together Oracle will try to
    store all of the data associated with those tables together on disk.
    The Oracle Spatial geometry datatype (mdsys.sdo_geometry) includes two varray types of
    length 1048576. Because these varrays can hold so much data Oracle "makes arraingements"
    to store data in these columns outside of the table in a lob segment (in reality, data is only
    stored out-of-line if there is over 4kb of data in the varray).
    Because of this (no ability to ensure the spatial data is stored with the clustering columns),
    the clustering mechnism is disabled when you have spatial data.
    I read through the doc and it is unclear - the only restriction I could find is using these columns
    as the clustering key.
    Hope this helps,
    Dan

Maybe you are looking for