⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jtstestparser.java

📁 postGIS是一个能够使用postSQL数据库来管理GIS数据的小程序,充分发挥了该数据库的空间管理功能,非常有用哦
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        System.out.println("asEWKB   : " + sqlGeom.toString());                        if (!geom.equalsExact(sqlGeom)) {                            System.out.println("--- Geometries after EWKB SQL are not equal!");                            failcount++;                        } else {                            System.out.println("equal    : yes");                        }                    }                } catch (SQLException e) {                    System.out.println("--- Server side error: " + e.toString());                    failcount++;                }                // HexEWKB parsing is not present on PostGIS 0.X.                try {                    if (serverPostgisMajor >= 1) {                        Geometry sqlGeom = viaSQL(hexNWKT, statement);                        System.out.println("hexNWKT:   " + sqlGeom.toString());                        if (!geom.equalsExact(sqlGeom)) {                            System.out.println("--- Geometries after EWKB SQL are not equal!");                            failcount++;                        } else {                            System.out.println("equal    : yes");                        }                    }                } catch (SQLException e) {                    System.out.println("--- Server side error: " + e.toString());                    failcount++;                }                try {                    if (serverPostgisMajor >= 1) {                        Geometry sqlGeom = viaSQL(hexXWKT, statement);                        System.out.println("hexXWKT:   " + sqlGeom.toString());                        if (!geom.equalsExact(sqlGeom)) {                            System.out.println("--- Geometries after EWKB SQL are not equal!");                            failcount++;                        } else {                            System.out.println("equal    : yes");                        }                    }                } catch (SQLException e) {                    System.out.println("--- Server side error: " + e.toString());                    failcount++;                }                // Canonical binary input is not present before 1.0                try {                    if (serverPostgisMajor >= 1) {                        Geometry sqlGeom = binaryViaSQL(NWKT, connection);                        System.out.println("NWKT:      " + sqlGeom.toString());                        if (!geom.equalsExact(sqlGeom)) {                            System.out.println("--- Geometries after EWKB SQL are not equal!");                            failcount++;                        } else {                            System.out.println("equal    : yes");                        }                    }                } catch (SQLException e) {                    System.out.println("--- Server side error: " + e.toString());                    failcount++;                }                try {                    if (serverPostgisMajor >= 1) {                        Geometry sqlGeom = binaryViaSQL(XWKT, connection);                        System.out.println("XWKT:      " + sqlGeom.toString());                        if (!geom.equalsExact(sqlGeom)) {                            System.out.println("--- Geometries after EWKB SQL are not equal!");                            failcount++;                        } else {                            System.out.println("equal    : yes");                        }                    }                } catch (SQLException e) {                    System.out.println("--- Server side error: " + e.toString());                    failcount++;                }            }            statement.close();        }        System.out.println("***");    }    // Rebuild given Geometry with a CoordinateArraySequence implementation.     public static Geometry rebuildCS(Geometry geom) {                if (geom instanceof Point) {            return rebuildCSPoint((Point)geom);        } else if (geom instanceof MultiPoint) {            return rebuildCSMP((MultiPoint)geom);        } else if (geom instanceof LineString) {            return rebuildCSLS((LineString)geom);        } else if (geom instanceof MultiLineString) {            return rebuildCSMLS((MultiLineString)geom);        } else if (geom instanceof Polygon) {            return rebuildCSP((Polygon)geom);        } else if (geom instanceof MultiPolygon) {            return rebuildCSMP((MultiPolygon)geom);        } else if (geom instanceof GeometryCollection) {            return rebuildCSGC((GeometryCollection)geom);        } else {            throw new AssertionError();        }    }    private static Geometry rebuildCSGC(GeometryCollection coll) {        Geometry[] geoms = new Geometry[coll.getNumGeometries()];        for (int i = 0; i < coll.getNumGeometries(); i++) {            geoms[i] = rebuildCS(coll.getGeometryN(i));        }        Geometry result = coll.getFactory().createGeometryCollection(geoms);        result.setSRID(coll.getSRID());        return result;    }    private static MultiPolygon rebuildCSMP(MultiPolygon multipoly) {        Polygon[] polygons = new Polygon[multipoly.getNumGeometries()];        for (int i=0; i < polygons.length; i++) {            polygons[i] = rebuildCSP((Polygon)multipoly.getGeometryN(i));        }        MultiPolygon result = multipoly.getFactory().createMultiPolygon(polygons);        result.setSRID(multipoly.getSRID());        return result;    }    private static Polygon rebuildCSP(Polygon polygon) {        LinearRing outer = rebuildLR(polygon.getExteriorRing());        LinearRing[] holes = new LinearRing[polygon.getNumInteriorRing()];        for (int i=0; i < holes.length; i++) {            holes[i] = rebuildLR(polygon.getInteriorRingN(i));        }        Polygon result = polygon.getFactory().createPolygon(outer, holes);        result.setSRID(polygon.getSRID());        return result;    }    private static LinearRing rebuildLR(LineString ring) {        LinearRing result = ring.getFactory().createLinearRing(ring.getCoordinates());        result.setSRID(ring.getSRID());        return result;    }    private static MultiLineString rebuildCSMLS(MultiLineString multiline) {        LineString[] polygons = new LineString[multiline.getNumGeometries()];        for (int i=0; i < polygons.length; i++) {            polygons[i] = rebuildCSLS((LineString)multiline.getGeometryN(i));        }        MultiLineString result = multiline.getFactory().createMultiLineString(polygons);        result.setSRID(multiline.getSRID());        return result;            }    private static LineString rebuildCSLS(LineString line) {        LineString result = line.getFactory().createLineString(line.getCoordinates());        result.setSRID(line.getSRID());        return result;     }    private static MultiPoint rebuildCSMP(MultiPoint mp) {        Point[] points = new Point[mp.getNumGeometries()];        for (int i=0; i < points.length; i++) {            points[i] = rebuildCSPoint((Point) mp.getGeometryN(i));        }        MultiPoint result = mp.getFactory().createMultiPoint(points);        result.setSRID(mp.getSRID());        return result;    }    private static Point rebuildCSPoint(Point point) {        Point result = point.getFactory().createPoint(point.getCoordinate());        result.setSRID(point.getSRID());        return result;           }    /** Pass a geometry representation through the SQL server */    private static Geometry viaSQL(String rep, Statement stat) throws SQLException {        ResultSet rs = stat.executeQuery("SELECT geometry_in('" + rep + "')");        rs.next();        return ((JtsGeometry) rs.getObject(1)).getGeometry();    }    /**     * Pass a geometry representation through the SQL server via prepared     * statement     */    private static Geometry viaPrepSQL(Geometry geom, Connection conn) throws SQLException {        PreparedStatement prep = conn.prepareStatement("SELECT ?::geometry");        JtsGeometry wrapper = new JtsGeometry(geom);        prep.setObject(1, wrapper, Types.OTHER);        ResultSet rs = prep.executeQuery();        rs.next();        JtsGeometry resultwrapper = ((JtsGeometry) rs.getObject(1));        return resultwrapper.getGeometry();    }    /** Pass a geometry representation through the SQL server via EWKT */    private static Geometry ewktViaSQL(String rep, Statement stat) throws SQLException {        ResultSet rs = stat.executeQuery("SELECT asEWKT(geometry_in('" + rep + "'))");        rs.next();        String resrep = rs.getString(1);        return JtsGeometry.geomFromString(resrep);    }    /** Pass a geometry representation through the SQL server via EWKB */    private static Geometry ewkbViaSQL(String rep, Statement stat) throws SQLException {        ResultSet rs = stat.executeQuery("SELECT asEWKB(geometry_in('" + rep + "'))");        rs.next();        byte[] resrep = rs.getBytes(1);        return bp.parse(resrep);    }    /** Pass a EWKB geometry representation through the server */    private static Geometry binaryViaSQL(byte[] rep, Connection conn) throws SQLException {        PreparedStatement prep = conn.prepareStatement("SELECT ?::bytea::geometry");        prep.setBytes(1, rep);        ResultSet rs = prep.executeQuery();        rs.next();        JtsGeometry resultwrapper = ((JtsGeometry) rs.getObject(1));        return resultwrapper.getGeometry();    }    /**     * Connect to the databases     *      * We use DriverWrapper here. For alternatives, see the DriverWrapper     * Javadoc     *      * @param dbuser     *      * @see org.postgis.DriverWrapper     *      */    public static Connection connect(String url, String dbuser, String dbpass) throws SQLException {        Connection conn;        conn = DriverManager.getConnection(url, dbuser, dbpass);        return conn;    }    public static void loadDrivers() throws ClassNotFoundException {        Class.forName("org.postgis.jts.JtsWrapper");    }    /** Our apps entry point */    public static void main(String[] args) throws SQLException, ClassNotFoundException {        loadDrivers();        PGtokenizer dburls;        String dbuser = null;        String dbpass = null;        if (args.length == 1 && args[0].equalsIgnoreCase("offline")) {            System.out.println("Performing only offline tests");            dburls = new PGtokenizer("", ';');        } else if (args.length == 3) {            System.out.println("Performing offline and online tests");            dburls = new PGtokenizer(args[0], ';');            dbuser = args[1];            dbpass = args[2];        } else {            System.err.println("Usage: java examples/TestParser dburls user pass [tablename]");            System.err.println("   or: java examples/TestParser offline");            System.err.println();            System.err.println("dburls has one or more jdbc urls separated by ; in the following format");            System.err.println("jdbc:postgresql://HOST:PORT/DATABASENAME");            System.err.println("tablename is 'jdbc_test' by default.");            System.exit(1);            // Signal the compiler that code flow ends here.            return;        }        Connection[] conns;        conns = new Connection[dburls.getSize()];        for (int i = 0; i < dburls.getSize(); i++) {            System.out.println("Creating JDBC connection to " + dburls.getToken(i));            conns[i] = connect(dburls.getToken(i), dbuser, dbpass);        }        System.out.println("Performing tests...");        System.out.println("***");        for (int i = 0; i < testset.length; i++) {            test(testset[i][1], conns, testset[i][0]);            test(SRIDPREFIX + testset[i][1], conns, testset[i][0]);        }        System.out.print("cleaning up...");        for (int i = 0; i < conns.length; i++) {            conns[i].close();        }        System.out.println("Finished, " + failcount + " tests failed!");        System.err.println("Finished, " + failcount + " tests failed!");        System.exit(failcount);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -