Package org.geotools.data.oracle.sdo

Source Code of org.geotools.data.oracle.sdo.SDOCreateTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*
*/
package org.geotools.data.oracle.sdo;

import org.geotools.data.oracle.sdo.MDSYS.SDO_GEOMETRY;
import org.junit.Test;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;

/**
* Unit tests for {@link SDO} <code>create*</code> methods.
* These test that the SDO create methods work correctly to read raw Oracle
* SDO_GEOMETRY structures into {@link Geometry} objects.
* These tests do not require a connection to Oracle.
*
* @author mbdavis
*/
public class SDOCreateTest {

    private static final int NULL = 0;

    public void testTest() throws Exception {
        testXYZM_MultiLineString();
    }

    @Test
    public void testXY_Point() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(2001, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1), MDSYS.SDO_ORDINATE_ARRAY(50, 50));
        checkValue(oraGeom, "POINT (50 50)");
    }

    @Test
    public void testXYM_Point() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3301, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1), MDSYS.SDO_ORDINATE_ARRAY(50, 50, 100));
        checkValue(oraGeom, 3, "POINT (50 50 100)");
    }

    @Test
    public void testXYZM_Point() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(4001, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1), MDSYS.SDO_ORDINATE_ARRAY(50, 50, 100, 200));
        checkValue(oraGeom, 3, "POINT (50 50 100)");
    }

    @Test
    public void testXYZ_LineString() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3002, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(0, 0, 0, 50, 50, 100));
        checkValue(oraGeom, "LINESTRING (0 0 0, 50 50 100)");
    }

    @Test
    public void testXYM_LineString() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3302, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(1, 1, 20, 2, 2, 30));
        checkValue(oraGeom, "LINESTRING (1 1, 2 2)");
    }

    @Test
    public void testXYMZ_LineString() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(4302, 8307, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1),
                MDSYS.SDO_ORDINATE_ARRAY(0, 0, 2, 3, 50, 50, 100, 200));
        checkValue(oraGeom, "LINESTRING (0 0, 50 50)");
    }

    @Test
    public void testXYZ_MultiPoint() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3005, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 2),
                MDSYS.SDO_ORDINATE_ARRAY(50, 50, 5, 100, 200, 300));
        checkValue(oraGeom, "MULTIPOINT ((50 50 5), (100 200 300))");
    }

    @Test
    public void testXYZ_MultiLineString() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3006, 8307, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1, 7, 2, 1),
                MDSYS.SDO_ORDINATE_ARRAY(0, 0, 2, 50, 50, 100, 10, 10, 12, 150, 150, 110));
        checkValue(oraGeom, "MULTILINESTRING ((0 0, 50 50), (10 10, 150 150))");
    }

    @Test
    public void testXYMZ_MultiLineString() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(4306, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2,
                1, 9, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(0, 0, 2, 3, 50, 50, 100, 200, 10, 10, 12, 13,
                150, 150, 110, 210));
        checkValue(oraGeom, "MULTILINESTRING ((0 0, 50 50), (10 10, 150 150))");
    }

    @Test
    public void testXYZM_MultiLineString() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(4406, 8307, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2,
                1, 9, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(0, 0, 2, 3, 50, 50, 100, 200, 10, 10, 12, 13,
                150, 150, 110, 210));
        checkValue(oraGeom, "MULTILINESTRING ((0 0, 50 50), (10 10, 150 150))");
    }

    @Test
    public void testXY_Polygon() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(2003, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
                MDSYS.SDO_ORDINATE_ARRAY(0, 0, 50, 0, 50, 50, 0, 50, 0, 0));
        checkValue(oraGeom, "POLYGON ((0 0, 50 0, 50 50, 0 50, 0 0))");
    }

    @Test
    public void testXYZ_Polygon() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3003, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
                MDSYS.SDO_ORDINATE_ARRAY(0, 0, 99, 50, 0, 99, 50, 50, 99, 0, 50, 99, 0, 0, 99));
        checkValue(oraGeom, "POLYGON ((0 0, 50 0, 50 50, 0 50, 0 0))");
    }

    @Test
    public void testXYM_Polygon() throws Exception {
        SDO_GEOMETRY oraGeom = MDSYS.SDO_GEOMETRY(3303, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
                MDSYS.SDO_ORDINATE_ARRAY(0, 0, 99, 50, 0, 99, 50, 50, 99, 0, 50, 99, 0, 0, 99));
        checkValue(oraGeom, "POLYGON ((0 0, 50 0, 50 50, 0 50, 0 0))");
    }

    @Test
    public void testXYZ_PolygonWithHole() throws Exception {
        checkValue(MDSYS.SDO_GEOMETRY(3003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 28,
                2003, 1), MDSYS.SDO_ORDINATE_ARRAY(2, 4, 99, 4, 3, 99, 10, 3, 99, 13, 5, 99, 13, 9,
                99, 11, 13, 99, 5, 13, 99, 2, 11, 99, 2, 4, 99, 7, 5, 99, 7, 10, 99, 10, 10, 99,
                10, 5, 99, 7, 5, 99)),
                "POLYGON ((2 4, 4 3, 10 3, 13 5, 13 9, 11 13, 5 13, 2 11, 2 4), (7 5, 7 10, 10 10, 10 5, 7 5))");
    }

    @Test
    public void testXYM_PolygonWithHole() throws Exception {
        checkValue(MDSYS.SDO_GEOMETRY(3303, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 28,
                2003, 1), MDSYS.SDO_ORDINATE_ARRAY(2, 4, 99, 4, 3, 99, 10, 3, 99, 13, 5, 99, 13, 9,
                99, 11, 13, 99, 5, 13, 99, 2, 11, 99, 2, 4, 99, 7, 5, 99, 7, 10, 99, 10, 10, 99,
                10, 5, 99, 7, 5, 99)),
                "POLYGON ((2 4, 4 3, 10 3, 13 5, 13 9, 11 13, 5 13, 2 11, 2 4), (7 5, 7 10, 10 10, 10 5, 7 5))");
    }

    @Test
    public void testXY_MultiPolygon() throws Exception {
        checkValue(MDSYS.SDO_GEOMETRY(2007, NULL, NULL,
                MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 11, 1003, 1),
                MDSYS.SDO_ORDINATE_ARRAY(2, 3, 7, 3, 7, 9, 2, 9, 2, 3, 9, 5, 13, 5, 11, 5, 9, 5)),
                "MULTIPOLYGON (((2 3, 7 3, 7 9, 2 9, 2 3)), ((9 5, 13 5, 11 5, 9 5)))");
    }

    @Test
    public void testXYZ_MultiPolygon() throws Exception {
        checkValue(MDSYS.SDO_GEOMETRY(3007, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 16,
                1003, 1), MDSYS.SDO_ORDINATE_ARRAY(2, 3, 99, 7, 3, 99, 7, 9, 99, 2, 9, 99, 2, 3,
                99, 9, 5, 99, 13, 5, 99, 11, 5, 99, 9, 5, 99)),
                "MULTIPOLYGON (((2 3, 7 3, 7 9, 2 9, 2 3)), ((9 5, 13 5, 11 5, 9 5)))");
    }

    @Test
    public void testXYM_MultiPolygon() throws Exception {
        checkValue(MDSYS.SDO_GEOMETRY(3307, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 16,
                1003, 1), MDSYS.SDO_ORDINATE_ARRAY(2, 3, 99, 7, 3, 99, 7, 9, 99, 2, 9, 99, 2, 3,
                99, 9, 5, 99, 13, 5, 99, 11, 5, 99, 9, 5, 99)),
                "MULTIPOLYGON (((2 3, 7 3, 7 9, 2 9, 2 3)), ((9 5, 13 5, 11 5, 9 5)))");
    }

    @Test
    public void testXYZM_MultiPolygon() throws Exception {
        checkValue(MDSYS.SDO_GEOMETRY(4307, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1, 21,
                1003, 1), MDSYS.SDO_ORDINATE_ARRAY(2, 3, 99, 88, 7, 3, 99, 88, 7, 9, 99, 88, 2, 9,
                99, 88, 2, 3, 99, 88, 9, 5, 99, 88, 13, 5, 99, 88, 11, 5, 99, 88, 9, 5, 99, 88)),
                "MULTIPOLYGON (((2 3, 7 3, 7 9, 2 9, 2 3)), ((9 5, 13 5, 11 5, 9 5)))");
    }

    @Test
    public void testXY_GeometryCollection_Doc() throws Exception {
        checkValueMDSYS.SDO_GEOMETRY(2004, NULL, NULL,
                              MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1, 3,2,1, 7,1003,1, 17,1003,1, 25,2003,1),
                              MDSYS.SDO_ORDINATE_ARRAY(
                                    1,1,
                                    1,2, 2,1,
                                    2,2, 3,2, 3,3, 2,3, 2,2,
                                    5,1, 9,5, 5,5, 5,1,
                                    5,3, 6,4, 6,3, 5,3 ) ),
                      "GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (1 2, 2 1), POLYGON ((2 2, 3 2, 3 3, 2 3, 2 2)), POLYGON ((5 1, 9 5, 5 5, 5 1), (5 3, 6 4, 6 3, 5 3)))");
    }
   
    @Test
    public void testXYM_GeometryCollection_Doc() throws Exception {
        checkValueMDSYS.SDO_GEOMETRY(3304, NULL, NULL,
                              MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1, 4,2,1, 10,1003,1, 25,1003,1, 37,2003,1),
                              MDSYS.SDO_ORDINATE_ARRAY(
                                    1,1,99,
                                    1,2,99, 2,1,99,
                                    2,2,99, 3,2,99, 3,3,99, 2,3,99, 2,2,99,
                                    5,1,99, 9,5,99, 5,5,99, 5,1,99,
                                    5,3,99, 6,4,99, 6,3,99, 5,3,99 ) ),
                      "GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (1 2, 2 1), POLYGON ((2 2, 3 2, 3 3, 2 3, 2 2)), POLYGON ((5 1, 9 5, 5 5, 5 1), (5 3, 6 4, 6 3, 5 3)))");
    }

    // =======================================================
    void checkValue(SDO_GEOMETRY oraGeom, String wkt) {
        checkValue(oraGeom, -1, wkt);
    }

    void checkValue(SDO_GEOMETRY oraGeom, int targetDim, String wkt) {
        final GeometryFactory geometryFactory = new GeometryFactory();
        WKTReader wktRdr = new WKTReader();

        final Geometry actual = create(oraGeom, geometryFactory);

        Geometry expected = null;
        try {
            expected = wktRdr.read(wkt);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

        boolean isEqual = actual.equalsNorm(expected);
        if (!isEqual) {
            System.out.println("Expected " + expected + ", actual " + actual);
        }
        assertTrue(isEqual);
    }

    private Geometry create(SDO_GEOMETRY oraGeom, GeometryFactory gf) {
        return SDO.create(gf, oraGeom.gType, oraGeom.srid, oraGeom.ptType, oraGeom.elemInfo,
                oraGeom.ordinates);
    }

}
TOP

Related Classes of org.geotools.data.oracle.sdo.SDOCreateTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.