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

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

?? jtsshape.java

?? postGIS是一個能夠使用postSQL數據庫來管理GIS數據的小程序,充分發揮了該數據庫的空間管理功能,非常有用哦
?? JAVA
字號:
package org.postgis.jts;import java.awt.Rectangle;import java.awt.Shape;import java.awt.geom.AffineTransform;import java.awt.geom.PathIterator;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;import com.vividsolutions.jts.geom.Coordinate;import com.vividsolutions.jts.geom.CoordinateSequence;import com.vividsolutions.jts.geom.Envelope;import com.vividsolutions.jts.geom.Geometry;import com.vividsolutions.jts.geom.GeometryCollection;import com.vividsolutions.jts.geom.GeometryFactory;import com.vividsolutions.jts.geom.LineString;import com.vividsolutions.jts.geom.LinearRing;import com.vividsolutions.jts.geom.Point;import com.vividsolutions.jts.geom.Polygon;import com.vividsolutions.jts.geom.impl.PackedCoordinateSequence;public class JTSShape implements Shape {    static GeometryFactory fac = new GeometryFactory();    Geometry geom;    final static LinearRing[] NOSHELLS = {};    public JTSShape(Geometry _geom) {        this.geom = _geom;    }        public JTSShape(JtsGeometry _geom) {        this(_geom.getGeometry());    }        public boolean contains(Point2D p) {        return contains(p.getX(), p.getY());    }    public boolean contains(double x, double y) {        Coordinate c = new Coordinate(x, y);        Point p = fac.createPoint(c);        return geom.contains(p);    }    public boolean contains(Rectangle2D r) {        return contains(r.getMinX(), r.getMinY(), r.getWidth(), r.getHeight());    }    public boolean contains(double x, double y, double w, double h) {        Polygon p = createRect(x, y, w, h);        return geom.contains(p);    }    protected Polygon createRect(double x, double y, double w, double h) {        double[] arr = { x, y, x + w, y, x + w, y + h, x, y + h, x, y };        PackedCoordinateSequence shell = new PackedCoordinateSequence.Double(arr, 2);        Polygon p = fac.createPolygon(fac.createLinearRing(shell), NOSHELLS);        return p;    }    public Rectangle2D getBounds2D() {        Envelope env = geom.getEnvelopeInternal();        return new Rectangle2D.Double(env.getMinX(), env.getMaxX(), env.getWidth(), env.getHeight());    }    public Rectangle getBounds() {        // We deal simple code for efficiency here, the getBounds() rounding        // rules are ugly...        return getBounds2D().getBounds();    }    public PathIterator getPathIterator(AffineTransform at) {        return getPathIterator(geom, at);    }    public PathIterator getPathIterator(AffineTransform at, double flatness) {        // we don't have much work here, as we only have linear segments, no        // "flattening" necessary.        return getPathIterator(at);    }    public boolean intersects(Rectangle2D r) {        return intersects(r.getMinX(), r.getMinY(), r.getWidth(), r.getHeight());    }    public boolean intersects(double x, double y, double w, double h) {        Polygon p = createRect(x, y, w, h);        return geom.intersects(p);    }    public static GeometryPathIterator getPathIterator(Geometry geometry, AffineTransform _at) {        if (geometry instanceof Point) {            return new PointPathIterator((Point) geometry, _at);        } else if (geometry instanceof LineString) {            return new LineStringPathIterator((LineString) geometry, _at);        } else if (geometry instanceof Polygon) {            return new PolygonPathIterator((Polygon) geometry, _at);        } else {            return new GeometryCollectionPathIterator((GeometryCollection) geometry, _at);        }    }    public static abstract class GeometryPathIterator implements PathIterator {        protected final AffineTransform at;        protected int index=0;        GeometryPathIterator(AffineTransform _at) {            this.at = _at;        }        public final int getWindingRule() {            return PathIterator.WIND_EVEN_ODD;        }        public void next() {            index++;        }    }        public static class PointPathIterator extends GeometryPathIterator {        final Point p;        public PointPathIterator(Point _p, AffineTransform _at) {            super(_at);            p = _p;        }        public int currentSegment(float[] coords) {            switch (index) {            case 0:                coords[0] = (float) p.getX();                coords[1] = (float) p.getY();                at.transform(coords, 0, coords, 0, 1);                return PathIterator.SEG_MOVETO;            case 1:                return PathIterator.SEG_CLOSE;            default:                throw new IllegalStateException();            }        }        public int currentSegment(double[] coords) {            switch (index) {            case 0:                coords[0] = p.getX();                coords[1] = p.getY();                at.transform(coords, 0, coords, 0, 1);                return PathIterator.SEG_MOVETO;            case 1:                return PathIterator.SEG_CLOSE;            default:                throw new IllegalStateException();            }        }        public boolean isDone() {            return index > 1;        }    }    public static class LineStringPathIterator extends GeometryPathIterator {        CoordinateSequence cs;        final boolean isRing;        public LineStringPathIterator(LineString ls, AffineTransform _at) {            super(_at);            cs = ls.getCoordinateSequence();            isRing = ls instanceof LinearRing;        }        /** only to be called from PolygonPathIterator subclass */        protected void reInit(CoordinateSequence _cs) {            cs = _cs;            index=0;        }                public int currentSegment(float[] coords) {            if (index == 0) {                coords[0] = (float) cs.getOrdinate(index, 0);                coords[1] = (float) cs.getOrdinate(index, 1);                at.transform(coords, 0, coords, 0, 1);                return PathIterator.SEG_MOVETO;            } else if (index < cs.size()) {                coords[0] = (float) cs.getOrdinate(index, 0);                coords[1] = (float) cs.getOrdinate(index, 1);                at.transform(coords, 0, coords, 0, 1);                return PathIterator.SEG_LINETO;            } else if (isRing && index == cs.size()) {                return PathIterator.SEG_CLOSE;            } else {                throw new IllegalStateException();            }        }        public int currentSegment(double[] coords) {            if (index == 0) {                coords[0] = cs.getOrdinate(index, 0);                coords[1] = cs.getOrdinate(index, 1);                at.transform(coords, 0, coords, 0, 1);                return PathIterator.SEG_MOVETO;            } else if (index < cs.size()) {                coords[0] = cs.getOrdinate(index, 0);                coords[1] = cs.getOrdinate(index, 1);                at.transform(coords, 0, coords, 0, 1);                return PathIterator.SEG_LINETO;            } else if (isRing && index == cs.size()) {                return PathIterator.SEG_CLOSE;            } else {                throw new IllegalStateException();            }        }        public boolean isDone() {            return isRing ? index > cs.size() : index >= cs.size();        }    }        public static class PolygonPathIterator extends LineStringPathIterator {        final Polygon pg;        int outerindex=-1;                public PolygonPathIterator(Polygon _pg, AffineTransform _at) {            super(_pg.getExteriorRing() ,_at);            pg=_pg;            index = -1;        }        public boolean isDone() {            return outerindex >= pg.getNumInteriorRing();        }                public void next() {            super.next();            if (super.isDone()) {                outerindex++;                if (outerindex < pg.getNumInteriorRing()) {                    super.reInit(pg.getInteriorRingN(outerindex).getCoordinateSequence());                }            }        }    }    public static class GeometryCollectionPathIterator extends GeometryPathIterator {        final GeometryCollection coll;        GeometryPathIterator current;        public GeometryCollectionPathIterator(GeometryCollection _coll, AffineTransform _at) {            super(_at);            coll = _coll;            current = getPathIterator(coll.getGeometryN(index), _at);        }        public boolean isDone() {            return index > coll.getNumGeometries();        }                public void next() {            current.next();            if (current.isDone()) {                index++;                if (index < coll.getNumGeometries()) {                    current = getPathIterator(coll.getGeometryN(index), at);                }            }        }        public int currentSegment(float[] coords) {            return current.currentSegment(coords);        }        public int currentSegment(double[] coords) {            return current.currentSegment(coords);        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久99| 欧美va亚洲va| 91丨porny丨中文| 岛国av在线一区| 国产.精品.日韩.另类.中文.在线.播放| 精品亚洲国内自在自线福利| 青草国产精品久久久久久| 看片网站欧美日韩| 久热成人在线视频| 国产一区二区三区在线观看免费| 久久国产精品免费| 国产精品夜夜嗨| 91视视频在线观看入口直接观看www| 成人在线视频首页| 91福利在线导航| 欧美人体做爰大胆视频| 日韩欧美一级二级三级久久久| 欧美一级精品在线| 久久亚洲精品小早川怜子| 国产视频一区在线观看| 国产精品女人毛片| 一区二区三区色| 日韩av一级片| 国产成人综合在线| 色94色欧美sute亚洲线路一ni| 在线不卡中文字幕| 欧美高清在线视频| 午夜精品久久久久久久99樱桃| 韩国欧美国产一区| 色吧成人激情小说| 久久蜜桃av一区精品变态类天堂 | 粉嫩高潮美女一区二区三区| 99re这里只有精品视频首页| 欧美日韩国产经典色站一区二区三区| 日韩免费成人网| 亚洲日本在线天堂| 九九热在线视频观看这里只有精品| 国产91清纯白嫩初高中在线观看 | 日韩欧美卡一卡二| 国产精品黄色在线观看| 蜜桃视频在线观看一区| 91一区二区三区在线观看| 日韩一区二区三区观看| 亚洲色图视频网| 精品一区二区av| 91麻豆精品国产91久久久更新时间 | 日本美女视频一区二区| 91女人视频在线观看| 日韩欧美电影一区| 午夜精品一区二区三区免费视频 | 蓝色福利精品导航| 91久久精品一区二区三| 欧美国产亚洲另类动漫| 免费精品视频在线| 欧美午夜不卡视频| 亚洲私人黄色宅男| 国产精品香蕉一区二区三区| 宅男在线国产精品| 亚洲一区二三区| 日本高清不卡视频| 亚洲另类在线一区| 91亚洲精品久久久蜜桃网站| 国产精品久久久99| 国产成人精品www牛牛影视| 精品福利视频一区二区三区| 五月天一区二区| 欧美日本国产一区| 午夜精品爽啪视频| 91麻豆精品国产自产在线| 日日骚欧美日韩| 欧美群妇大交群的观看方式| 亚洲国产wwwccc36天堂| 欧美日韩国产一二三| 亚洲动漫第一页| 欧美一区二区视频在线观看2020| 丝袜美腿亚洲一区| 欧美高清你懂得| 秋霞电影网一区二区| 91精品国产综合久久精品性色| 亚洲123区在线观看| 欧美色成人综合| 午夜婷婷国产麻豆精品| 欧美精品色综合| 免费观看久久久4p| 日韩情涩欧美日韩视频| 久久91精品久久久久久秒播| 久久先锋影音av鲁色资源| 国产91高潮流白浆在线麻豆| 中文字幕一区二区三区蜜月| 色婷婷综合久色| 婷婷综合五月天| 久久在线观看免费| 99国产欧美另类久久久精品| 亚洲国产视频在线| 欧美夫妻性生活| 黄色成人免费在线| 中文字幕国产精品一区二区| 一本一道波多野结衣一区二区 | 美女视频网站久久| 337p日本欧洲亚洲大胆精品| av在线播放不卡| 亚洲一区二区精品视频| 欧美tk—视频vk| 高清久久久久久| 午夜伦欧美伦电影理论片| 精品国产一区二区精华| 91麻豆自制传媒国产之光| 日韩国产成人精品| 综合婷婷亚洲小说| 欧美一区二区三区系列电影| 成人黄色一级视频| 婷婷久久综合九色综合伊人色| 26uuu精品一区二区三区四区在线| 国产精品一级片在线观看| 亚洲精品一二三| 精品国产凹凸成av人网站| 91视频一区二区三区| 麻豆一区二区99久久久久| 亚洲欧美日韩一区| 久久免费视频一区| 6080国产精品一区二区| 91网站在线播放| 国产成人在线视频网址| 天堂成人国产精品一区| 一区二区三区日韩欧美精品| 国产欧美va欧美不卡在线| 7777精品伊人久久久大香线蕉完整版| 不卡免费追剧大全电视剧网站| 乱中年女人伦av一区二区| 五月开心婷婷久久| 亚洲欧美另类在线| 中文字幕字幕中文在线中不卡视频| 亚洲精品一区二区三区香蕉| 欧美日韩一级黄| 色狠狠一区二区三区香蕉| 99re热这里只有精品免费视频| 国产伦精品一区二区三区免费| 免费不卡在线观看| 日韩黄色在线观看| 午夜av一区二区三区| 亚洲地区一二三色| 亚洲福利视频一区| 五月婷婷色综合| 午夜精品一区二区三区电影天堂| 玉米视频成人免费看| 亚洲永久精品国产| 亚洲日本在线视频观看| 中文字幕综合网| 亚洲综合清纯丝袜自拍| 亚洲一区二区黄色| 午夜久久电影网| 久久精品国产免费看久久精品| 奇米影视在线99精品| 久久精品理论片| 国产suv精品一区二区883| 成人永久aaa| 色综合久久综合网欧美综合网| 色综合久久66| 欧美日韩一区三区四区| 欧美精品丝袜久久久中文字幕| 欧美日韩精品一区二区三区蜜桃 | 欧美色老头old∨ideo| 91精品国产乱| 久久久久久影视| 最新国产成人在线观看| 亚洲成人一区在线| 麻豆一区二区在线| 成人app在线观看| 91成人在线免费观看| 欧美电影免费观看完整版| 国产精品你懂的在线| 一区二区免费视频| 日本vs亚洲vs韩国一区三区二区| 精品亚洲免费视频| 色诱视频网站一区| 91精品国产综合久久久久久久久久 | 精品对白一区国产伦| 国产精品久久久久久久久久免费看| 日本一区二区成人在线| 亚洲男帅同性gay1069| 天天av天天翘天天综合网色鬼国产| 免费在线看一区| 成人国产视频在线观看| 在线亚洲免费视频| 精品免费视频一区二区| 国产精品乱码一区二区三区软件 | 亚洲日本在线a| 蜜桃视频在线观看一区二区| 丰满少妇在线播放bd日韩电影| 日本高清不卡aⅴ免费网站| 欧美刺激午夜性久久久久久久| 久久精品这里都是精品| 亚洲午夜视频在线| 国产乱子轮精品视频| 在线看国产一区| 另类小说视频一区二区| 国产69精品一区二区亚洲孕妇| 色欧美片视频在线观看在线视频| 精品av综合导航| 亚洲福利电影网|