亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jtsbinaryparser.java

?? postGIS是一個能夠使用postSQL數據庫來管理GIS數據的小程序,充分發揮了該數據庫的空間管理功能,非常有用哦
?? JAVA
字號:
/* * JtsBinaryParser.java *  * Binary Parser for JTS - relies on org.postgis V1.0.0+ package. *  * (C) 2005 Markus Schaber, markus.schaber@logix-tt.com *  * 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, either 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. *  * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA or visit the web at * http://www.gnu.org. *  * $Id: JtsBinaryParser.java 2493 2006-10-02 14:30:47Z mschaber $ */package org.postgis.jts;import org.postgis.binary.ByteGetter;import org.postgis.binary.ValueGetter;import org.postgis.binary.ByteGetter.BinaryByteGetter;import org.postgis.binary.ByteGetter.StringByteGetter;import com.vividsolutions.jts.geom.*;import com.vividsolutions.jts.geom.impl.PackedCoordinateSequence;/** * Parse binary representation of geometries. Currently, only text rep (hexed) * implementation is tested. *  * It should be easy to add char[] and CharSequence ByteGetter instances, * although the latter one is not compatible with older jdks. *  * I did not implement real unsigned 32-bit integers or emulate them with long, * as both java Arrays and Strings currently can have only 2^31-1 elements * (bytes), so we cannot even get or build Geometries with more than approx. * 2^28 coordinates (8 bytes each). *  * @author Markus Schaber, markus.schaber@logix-tt.com *  */public class JtsBinaryParser {    /**     * Get the appropriate ValueGetter for my endianness     *      * @param bytes     *            The appropriate Byte Getter     *      * @return the ValueGetter     */    public static ValueGetter valueGetterForEndian(ByteGetter bytes) {        if (bytes.get(0) == ValueGetter.XDR.NUMBER) { // XDR            return new ValueGetter.XDR(bytes);        } else if (bytes.get(0) == ValueGetter.NDR.NUMBER) {            return new ValueGetter.NDR(bytes);        } else {            throw new IllegalArgumentException("Unknown Endian type:" + bytes.get(0));        }    }    /**     * Parse a hex encoded geometry     */    public Geometry parse(String value) {        StringByteGetter bytes = new ByteGetter.StringByteGetter(value);        return parseGeometry(valueGetterForEndian(bytes));    }    /**     * Parse a binary encoded geometry.     */    public Geometry parse(byte[] value) {        BinaryByteGetter bytes = new ByteGetter.BinaryByteGetter(value);        return parseGeometry(valueGetterForEndian(bytes));    }    /** Parse a geometry starting at offset. */    protected Geometry parseGeometry(ValueGetter data) {        return parseGeometry(data, 0, false);    }    /** Parse with a known geometry factory */    protected Geometry parseGeometry(ValueGetter data, int srid, boolean inheritSrid) {        byte endian = data.getByte(); // skip and test endian flag        if (endian != data.endian) {            throw new IllegalArgumentException("Endian inconsistency!");        }        int typeword = data.getInt();        int realtype = typeword & 0x1FFFFFFF; // cut off high flag bits        boolean haveZ = (typeword & 0x80000000) != 0;        boolean haveM = (typeword & 0x40000000) != 0;        boolean haveS = (typeword & 0x20000000) != 0;        if (haveS) {            int newsrid = data.getInt();            if (inheritSrid && newsrid != srid) {                throw new IllegalArgumentException("Inconsistent srids in complex geometry: " + srid + ", " + newsrid);            } else {                srid = newsrid;            }        } else if (!inheritSrid) {            srid = -1;        }               Geometry result;        switch (realtype) {        case org.postgis.Geometry.POINT:            result = parsePoint(data, haveZ, haveM);            break;        case org.postgis.Geometry.LINESTRING:            result = parseLineString(data, haveZ, haveM);            break;        case org.postgis.Geometry.POLYGON:            result = parsePolygon(data, haveZ, haveM, srid);            break;        case org.postgis.Geometry.MULTIPOINT:            result = parseMultiPoint(data, srid);            break;        case org.postgis.Geometry.MULTILINESTRING:            result = parseMultiLineString(data, srid);            break;        case org.postgis.Geometry.MULTIPOLYGON:            result = parseMultiPolygon(data, srid);            break;        case org.postgis.Geometry.GEOMETRYCOLLECTION:            result = parseCollection(data, srid);            break;        default:            throw new IllegalArgumentException("Unknown Geometry Type!");        }                result.setSRID(srid);                return result;    }    private Point parsePoint(ValueGetter data, boolean haveZ, boolean haveM) {        double X = data.getDouble();        double Y = data.getDouble();        Point result;        if (haveZ) {            double Z = data.getDouble();            result = JtsGeometry.geofac.createPoint(new Coordinate(X, Y, Z));        } else {            result = JtsGeometry.geofac.createPoint(new Coordinate(X, Y));        }        if (haveM) { // skip M value            data.getDouble();        }                return result;    }    /** Parse an Array of "full" Geometries */    private void parseGeometryArray(ValueGetter data, Geometry[] container, int srid) {        for (int i = 0; i < container.length; i++) {            container[i] = parseGeometry(data, srid, true);        }    }    /**     * Parse an Array of "slim" Points (without endianness and type, part of     * LinearRing and Linestring, but not MultiPoint!     *      * @param haveZ     * @param haveM     */    private CoordinateSequence parseCS(ValueGetter data, boolean haveZ, boolean haveM) {        int count = data.getInt();        int dims = haveZ ? 3 : 2;        CoordinateSequence cs = new PackedCoordinateSequence.Double(count, dims);        for (int i = 0; i < count; i++) {            for (int d = 0; d < dims; d++) {                cs.setOrdinate(i, d, data.getDouble());            }            if (haveM) { // skip M value                data.getDouble();            }        }        return cs;    }    private MultiPoint parseMultiPoint(ValueGetter data, int srid) {        Point[] points = new Point[data.getInt()];        parseGeometryArray(data, points, srid);        return JtsGeometry.geofac.createMultiPoint(points);    }    private LineString parseLineString(ValueGetter data, boolean haveZ, boolean haveM) {        return JtsGeometry.geofac.createLineString(parseCS(data, haveZ, haveM));    }    private LinearRing parseLinearRing(ValueGetter data, boolean haveZ, boolean haveM) {        return JtsGeometry.geofac.createLinearRing(parseCS(data, haveZ, haveM));    }    private Polygon parsePolygon(ValueGetter data, boolean haveZ, boolean haveM, int srid) {        int holecount = data.getInt() - 1;        LinearRing[] rings = new LinearRing[holecount];        LinearRing shell = parseLinearRing(data, haveZ, haveM);        shell.setSRID(srid);        for (int i = 0; i < holecount; i++) {            rings[i] = parseLinearRing(data, haveZ, haveM);            rings[i].setSRID(srid);        }        return JtsGeometry.geofac.createPolygon(shell, rings);    }    private MultiLineString parseMultiLineString(ValueGetter data, int srid) {        int count = data.getInt();        LineString[] strings = new LineString[count];        parseGeometryArray(data, strings, srid);        return JtsGeometry.geofac.createMultiLineString(strings);    }    private MultiPolygon parseMultiPolygon(ValueGetter data, int srid) {        int count = data.getInt();        Polygon[] polys = new Polygon[count];        parseGeometryArray(data, polys, srid);        return JtsGeometry.geofac.createMultiPolygon(polys);    }    private GeometryCollection parseCollection(ValueGetter data, int srid) {        int count = data.getInt();        Geometry[] geoms = new Geometry[count];        parseGeometryArray(data, geoms, srid);        return JtsGeometry.geofac.createGeometryCollection(geoms);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图19p| 国产精品成人午夜| 欧美日韩成人综合| 色婷婷亚洲婷婷| 在线影视一区二区三区| 色欧美88888久久久久久影院| 国产成人av一区| 成人在线视频首页| eeuss鲁片一区二区三区在线观看| 国产在线国偷精品免费看| 国产一本一道久久香蕉| 国产精品一二三四区| 波多野结衣亚洲| 色中色一区二区| 欧美一区二区三级| 久久先锋资源网| 国产精品久久久久久久久久免费看 | 91麻豆精品国产| 欧美一级xxx| 久久亚洲欧美国产精品乐播| 国产区在线观看成人精品| 国产精品天美传媒| 一区二区欧美精品| 蜜桃精品视频在线观看| 国产一区二区调教| 色综合天天综合网天天狠天天| 91成人网在线| 精品剧情v国产在线观看在线| 精品1区2区在线观看| 中文字幕第一区| 亚洲一区二区三区四区不卡| 麻豆精品一二三| 99re6这里只有精品视频在线观看| 欧美色视频在线| 国产三级一区二区| 亚洲国产一区二区三区| 捆绑变态av一区二区三区| jiyouzz国产精品久久| 制服丝袜亚洲播放| 欧美日韩亚洲高清一区二区| 亚洲欧美综合网| 丁香天五香天堂综合| 波多野结衣中文字幕一区二区三区| 色综合视频在线观看| 日韩一级完整毛片| 国产精品久久久久精k8| 免费成人小视频| 91色porny蝌蚪| 欧美r级电影在线观看| 亚洲一区在线观看网站| 国产精品亚洲第一区在线暖暖韩国| 色播五月激情综合网| 欧美α欧美αv大片| 亚洲福利国产精品| 成人av在线影院| 精品国产一区二区亚洲人成毛片| 亚洲精品视频在线观看免费| 国内欧美视频一区二区| 欧美在线免费播放| 中文字幕免费不卡| 国产毛片一区二区| 日韩你懂的在线播放| 亚洲va天堂va国产va久| 91亚洲资源网| 国产精品国产精品国产专区不蜜 | 亚洲免费观看高清完整版在线观看熊| 麻豆国产一区二区| 91精品国产综合久久久久久| 亚洲一区二区三区四区五区黄| 91在线观看成人| 亚洲国产岛国毛片在线| 国产成a人亚洲精| 26uuu另类欧美| 国模冰冰炮一区二区| 精品欧美乱码久久久久久1区2区 | 久久91精品久久久久久秒播| 欧美色电影在线| 亚洲午夜久久久久久久久电影网| 91丨九色丨国产丨porny| 中文字幕一区二区三区精华液| 成人激情小说网站| 中文字幕亚洲不卡| aaa亚洲精品| 亚洲欧美偷拍卡通变态| 欧美在线免费视屏| 天天影视网天天综合色在线播放| 欧美日韩三级在线| 日韩成人精品在线| 精品久久五月天| 国产成人午夜视频| 亚洲欧美色图小说| 欧美日韩精品二区第二页| 日韩在线一区二区三区| 日韩欧美一级在线播放| 国产成人在线影院| 亚洲欧美激情在线| 欧美精品 日韩| 国产九九视频一区二区三区| 国产精品久久久久7777按摩 | 亚洲一二三专区| 欧美大片一区二区三区| 国产成人av一区二区三区在线 | 免费在线看成人av| 国产精品丝袜91| 欧美日韩国产欧美日美国产精品| 日本成人在线电影网| 久久久久久久综合| 91久久久免费一区二区| 久久成人羞羞网站| 亚洲精品美腿丝袜| 欧美电影在线免费观看| 国产成人精品亚洲777人妖 | 国产精品白丝在线| 制服丝袜亚洲色图| 99精品欧美一区二区三区小说| 图片区小说区区亚洲影院| 欧美国产精品劲爆| 欧美精品精品一区| av资源网一区| 美女视频免费一区| 亚洲韩国一区二区三区| 中文av一区二区| 日韩欧美视频一区| 色偷偷久久人人79超碰人人澡| 久久99精品久久久久久国产越南| 亚洲色图欧美在线| 国产亚洲综合av| 欧美一区二区人人喊爽| 色综合久久久久| 国产高清不卡二三区| 蜜桃视频一区二区| 亚洲国产成人91porn| 国产精品久久久一本精品| 欧美电影精品一区二区| 51午夜精品国产| 欧洲人成人精品| 91丨九色丨尤物| 99精品在线免费| 国产成人鲁色资源国产91色综| 麻豆成人在线观看| 三级精品在线观看| 爽好多水快深点欧美视频| 亚洲品质自拍视频网站| 亚洲同性同志一二三专区| 中文字幕不卡在线观看| 亚洲国产精品av| 国产免费观看久久| 国产欧美一区二区三区在线老狼| 欧美成人一区二区| 日韩女优视频免费观看| 91精品国产入口在线| 欧美一区二区三区四区在线观看| 欧美性色黄大片手机版| 色999日韩国产欧美一区二区| 99国产精品久久久久久久久久| 91尤物视频在线观看| 色吊一区二区三区| 在线精品视频一区二区| 欧美性欧美巨大黑白大战| 在线一区二区三区做爰视频网站| 色婷婷狠狠综合| 欧美日韩精品一区二区三区蜜桃| 欧美三级中文字幕在线观看| 欧美日本国产视频| 欧美成人一区二区三区在线观看| 精品乱码亚洲一区二区不卡| 精品国产91乱码一区二区三区| 久久先锋影音av| 综合欧美亚洲日本| 亚洲 欧美综合在线网络| 三级成人在线视频| 国产麻豆成人传媒免费观看| 高清不卡一二三区| 97se狠狠狠综合亚洲狠狠| 欧美图片一区二区三区| 日韩欧美在线一区二区三区| 久久影院午夜论| 亚洲视频小说图片| 偷拍与自拍一区| 国产高清在线观看免费不卡| 91在线播放网址| 日韩美女一区二区三区四区| 久久久不卡影院| 亚洲成人精品影院| 国产呦精品一区二区三区网站| thepron国产精品| 91精品国产综合久久福利软件 | 欧美一区二区三区电影| 久久精品一区二区| 亚洲国产一二三| 国产成人高清在线| 7799精品视频| 国产日产欧美一区二区三区 | 日韩一区二区三区视频| 国产人伦精品一区二区| 亚洲一区二区欧美| 成人污污视频在线观看| 日韩女优av电影在线观看| 亚洲精品久久7777| 国产乱码精品一区二区三|