黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java使用GeoTools讀取shp文件并畫(huà)圖的操作代碼

瀏覽:16日期:2022-08-10 15:58:13

GeoTools是ArcGis地圖與java對(duì)象的橋梁,恰如jdbc之于oracle與java。shp文件本身是存有地理對(duì)象邊界坐標(biāo)、對(duì)象中心城市及城市編號(hào)的多多邊形字符串。需要使用的依賴(lài)如下

<!-- 添加GeoTools依賴(lài) --><dependency> <groupId>org.geotools</groupId> <artifactId>gt-shapefile</artifactId> <version>${geotools.version}</version></dependency><dependency> <groupId>org.geotools</groupId> <artifactId>gt-swing</artifactId> <version>${geotools.version}</version></dependency><dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency>

對(duì)象:

public class CutProperty { private String province; private int x; private int y; /** * 圖片寬 * */ private int width; /** * 圖片高 * */ private int height; /** * 畫(huà)圖時(shí)線(xiàn)條粗細(xì) * */ private float weight; /** * 地圖坐標(biāo)右邊界 * */ private int rightborder; /** * 地圖坐標(biāo)放大倍數(shù) * */ private int bei; /** * 文字大小 * */ private int stringsize;

來(lái)自@author yukun24@126.com的工具類(lèi),讀取shp文件:

package com.gwhn.geotools;import org.geotools.data.FeatureWriter;import org.geotools.data.FileDataStoreFactorySpi;import org.geotools.data.Transaction;import org.geotools.data.shapefile.ShapefileDataStore;import org.geotools.data.shapefile.ShapefileDataStoreFactory;import org.geotools.data.simple.SimpleFeatureIterator;import org.geotools.data.simple.SimpleFeatureSource;import org.geotools.feature.FeatureCollection;import org.geotools.feature.simple.SimpleFeatureTypeBuilder;import org.geotools.referencing.crs.DefaultGeographicCRS;import org.junit.Test;import org.locationtech.jts.geom.*;import org.opengis.feature.Property;import org.opengis.feature.simple.SimpleFeature;import org.opengis.feature.simple.SimpleFeatureType;import java.io.File;import java.io.Serializable;import java.nio.charset.Charset;import java.util.*;public class ShapeUtil { //讀shp文件【幾何信息+屬性信息】 public List<Property> SHPRead(String path) throws Exception {List<Property> propertyList = new ArrayList<>();//基于上面新建的shapfile文件,進(jìn)行讀取//構(gòu)建shapefile數(shù)據(jù)存儲(chǔ)的實(shí)例ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();//基于路徑構(gòu)建文件對(duì)象File file = new File(path);//構(gòu)建一個(gè)已存在的shapfile數(shù)據(jù)源//ShapefileDataStore:數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn),允許從Shapefiles讀取和寫(xiě)入ShapefileDataStore ds = (ShapefileDataStore) dataStoreFactory.createDataStore(file.toURI().toURL());//設(shè)置編碼,防止中文讀取亂碼ds.setCharset(Charset.forName('UTF-8'));//getFeatureSource():ContentFeatureSource//這個(gè)特性是由 FeatureCollection提供的操作完成的。單獨(dú)的特征記憶實(shí)現(xiàn)由子類(lèi)提供://SimpleFeatureSource特征資源明確地使用FeatureCollection【集合】,可迭代SimpleFeatureSource featureSource = ds.getFeatureSource();//getFeatures():以FeatureCollection的形式檢索所有特性。//一個(gè)用于處理FeatureCollection的實(shí)用工具類(lèi)。提供一個(gè)獲取FeatureCollection實(shí)例的機(jī)制FeatureCollection<SimpleFeatureType, SimpleFeature> result = featureSource.getFeatures();System.out.println('幾何對(duì)象總共有:' + result.size());//features():返回一個(gè)FeatureIterator迭代器SimpleFeatureIterator it = (SimpleFeatureIterator) result.features();while (it.hasNext()) { SimpleFeature feature = it.next(); //迭代屬性【屬性我們可以理解為一個(gè)幾何對(duì)象的屬性節(jié)點(diǎn),也就是對(duì)一個(gè)幾何圖形的描述字段】 Iterator<Property> ip = feature.getProperties().iterator();// System.out.println('========================'); //再來(lái)個(gè)while while (ip.hasNext()) {Property pro = ip.next();//System.out.println(pro.getName()+' = '+pro.getValue());propertyList.add(pro); }//end 屬性迭代}it.close();return propertyList; } }

來(lái)自@author yukun24@126.com的工具類(lèi),此處用來(lái)將shp中獲取的字符串轉(zhuǎn)化為多多邊形對(duì)象MultiPolygon

package com.gwhn.geotools;import org.locationtech.jts.geom.*;import org.locationtech.jts.io.ParseException;import org.locationtech.jts.io.WKTReader;import java.util.List;/** * 幾何對(duì)象構(gòu)建器 * * @author yukun24@126.com * @version V1.0.1 * @blob http://blog.csdn.net/appleyk * @date 2017年12月8日10:38:49 *///單例模式public class GeometryCreator { public static GeometryCreator geometryCreator = null; private GeometryFactory geometryFactory = new GeometryFactory(); public GeometryCreator() { } /** * 返回本類(lèi)的唯一實(shí)例 * * @return */ public static GeometryCreator getInstance() {if (geometryCreator == null) { return new GeometryCreator();}return geometryCreator; } /** * 1.構(gòu)建點(diǎn) */ /** * 1.1根據(jù)X,Y坐標(biāo)構(gòu)建一個(gè)幾何對(duì)象: 點(diǎn) 【Point】 * * @param x * @param y * @return */ public Point createPoint(double x, double y) {Coordinate coord = new Coordinate(x, y);Point point = geometryFactory.createPoint(coord);return point; } /** * 1.2根據(jù)幾何對(duì)象的WKT描述【String】創(chuàng)建幾何對(duì)象: 點(diǎn) 【Point】 * * @return * @throws ParseException */ public Point createPointByWKT(String PointWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);Point point = (Point) reader.read(PointWKT);return point; } /** * 1.3根據(jù)幾何對(duì)象的WKT描述【String】創(chuàng)建幾何對(duì)象:多點(diǎn) 【MultiPoint】 * * @return * @throws ParseException */ public MultiPoint createMulPointByWKT(String MPointWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);MultiPoint mpoint = (MultiPoint) reader.read(MPointWKT);return mpoint; } /** * 2.構(gòu)建線(xiàn) */ /** * 2.1根據(jù)兩點(diǎn) 創(chuàng)建幾何對(duì)象:線(xiàn) 【LineString】 * * @param ax * @param ay * @param bx * @param by * @return */ public LineString createLine(double ax, double ay, double bx, double by) {Coordinate[] coords = new Coordinate[]{new Coordinate(ax, ay), new Coordinate(bx, by)};LineString line = geometryFactory.createLineString(coords);return line; } /** * 2.2根據(jù)線(xiàn)的WKT描述創(chuàng)建幾何對(duì)象:線(xiàn) 【LineString】 * * @param LineStringWKT * @return * @throws ParseException */ public LineString createLineByWKT(String LineStringWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);LineString line = (LineString) reader.read('LINESTRING(0 0, 2 0)');return line; } /** * 2.3根據(jù)點(diǎn)組合的線(xiàn)數(shù)組,創(chuàng)建幾何對(duì)象:多線(xiàn) 【MultiLineString】 * * @param list * @return */ public MultiLineString createMLine(List<Coordinate[]> list) {MultiLineString ms = null;if (list == null) { return ms;}LineString[] lineStrings = new LineString[list.size()];// Coordinate[] coords1 = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)}; // LineString line1 = geometryFactory.createLineString(coords1); // // Coordinate[] coords2 = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)}; // LineString line2 = geometryFactory.createLineString(coords2); int i = 0;for (Coordinate[] coordinates : list) { lineStrings[i] = geometryFactory.createLineString(coordinates);}ms = geometryFactory.createMultiLineString(lineStrings);return ms; } /** * 2.4根據(jù)幾何對(duì)象的WKT描述【String】創(chuàng)建幾何對(duì)象 : 多線(xiàn)【MultiLineString】 * * @param MLineStringWKT * @return * @throws ParseException */ public MultiLineString createMLineByWKT(String MLineStringWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);MultiLineString line = (MultiLineString) reader.read(MLineStringWKT);return line; } /** * 3.構(gòu)建多邊形 */ /** * 3.1 根據(jù)幾何對(duì)象的WKT描述【String】創(chuàng)建幾何對(duì)象:多邊形 【Polygon】 * * @param PolygonWKT * @return * @throws ParseException */ public Polygon createPolygonByWKT(String PolygonWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);Polygon polygon = (Polygon) reader.read(PolygonWKT);return polygon; } /** * 3.2 根據(jù)幾何對(duì)象的WKT描述【String】創(chuàng)建幾何對(duì)象: 多多邊形 【MultiPolygon】 * * @param MPolygonWKT * @return * @throws ParseException */ public MultiPolygon createMulPolygonByWKT(String MPolygonWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);MultiPolygon mpolygon = (MultiPolygon) reader.read(MPolygonWKT);return mpolygon; } /** * 根據(jù)多邊形數(shù)組 進(jìn)行多多邊形的創(chuàng)建 * * @param polygons * @return * @throws ParseException */ public MultiPolygon createMulPolygonByPolygon(Polygon[] polygons) throws ParseException {return geometryFactory.createMultiPolygon(polygons); } /** * 4.構(gòu)建幾何對(duì)象集合 */ /** * 4.1 根據(jù)幾何對(duì)象數(shù)組,創(chuàng)建幾何對(duì)象集合:【GeometryCollection】 * * @return * @throws ParseException */ public GeometryCollection createGeoCollect(Geometry[] geoArray) throws ParseException {// LineString line = createLine(125.12,25.4,85.63,99.99); // Polygon poly = createPolygonByWKT('POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))'); // Geometry g1 = geometryFactory.createGeometry(line); // Geometry g2 = geometryFactory.createGeometry(poly); // Geometry[] geoArray = new Geometry[]{g1,g2}; GeometryCollection gc = geometryFactory.createGeometryCollection(geoArray);return gc; } /** * 5.構(gòu)建圓 */ /** * 5.1 根據(jù)圓點(diǎn)以及半徑創(chuàng)建幾何對(duì)象:特殊的多邊形--圓 【Polygon】 * * @param x * @param y * @param RADIUS * @return */ public Polygon createCircle(double x, double y, final double RADIUS) {final int SIDES = 32;//圓上面的點(diǎn)個(gè)數(shù)Coordinate coords[] = new Coordinate[SIDES + 1];for (int i = 0; i < SIDES; i++) { double angle = ((double) i / (double) SIDES) * Math.PI * 2.0; double dx = Math.cos(angle) * RADIUS; double dy = Math.sin(angle) * RADIUS; coords[i] = new Coordinate((double) x + dx, (double) y + dy);}coords[SIDES] = coords[0];//線(xiàn)性環(huán)LinearRing ring = geometryFactory.createLinearRing(coords);Polygon polygon = geometryFactory.createPolygon(ring, null);return polygon; } /** * 6.構(gòu)建環(huán) */ /** * 6.1 根據(jù)WKT創(chuàng)建環(huán) * * @param ringWKT * @return * @throws ParseException */ public LinearRing createLinearRingByWKT(String ringWKT) throws ParseException {WKTReader reader = new WKTReader(geometryFactory);LinearRing ring = (LinearRing) reader.read(ringWKT);return ring; }}

有xml如下:

<?xml version='1.0' encoding='UTF-8'?><application> <!-- 網(wǎng)絡(luò)配置--> <module name='Http'><group name='FileExport'> <configValue key='ShapePath'>D:/testspace/spd/rain/</configValue> <configValue key='ProvinceShapePath'>D:/testspace/spd/Provinces_shp/</configValue> <configValue key='ProvincePath'>D:testspacespdoutput</configValue> <configValue key='ExportPath'>D:testspacespdExport</configValue> <configValue key='PropertyPath'>D:testspacespdExport</configValue></group> </module></application>

xml讀取以獲取shp文件位置和圖片輸出位置:

package com.gwhn.Util;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.Text;import org.dom4j.io.SAXReader;import java.io.File;import java.util.Iterator;/** * @author banxian * @date 2021/1/21 15:56 */public class YereeXmlContext { /** * 根據(jù)一二三級(jí)字節(jié)點(diǎn)的key,迭代到第三級(jí)節(jié)點(diǎn)根據(jù)三級(jí)key獲取值 * <!-- 網(wǎng)絡(luò)配置--> * <module name='Http'> * <group name='FileUpload'> *<configValue key='TempDir'>D:tempupload</configValue> * </group> * </module> * * @param key1 * @param key2 * @param key3 * @return * @author banxian * @date: 2021/1/21 19:51 */ public String getXmlValue(String key1, String key2, String key3) {try { //1.創(chuàng)建Reader對(duì)象 SAXReader reader = new SAXReader(); //2.加載xml String directoryPath = Thread.currentThread().getContextClassLoader().getResource('config.xml').getPath();//獲取項(xiàng)目根目錄 Document document = reader.read(new File(directoryPath)); //3.獲取根節(jié)點(diǎn) Element rootElement = document.getRootElement(); Element moduleElement = getTargetElement(key1, rootElement); Element groupElement = getTargetElement(key2, moduleElement); Element configElement = getTargetElement(key3, groupElement); Attribute attribute = (Attribute) configElement.attributes().get(0); String key = attribute.getValue(); Text text3 = (Text) configElement.content().get(0); String value = text3.getText(); return value;} catch (Exception e) { e.printStackTrace();}return null; } /** * 獲取和targetKey匹配的一個(gè)子節(jié)點(diǎn) * * @param targetKey * @param parentElement * @return * @author banxian * @date: 2021/1/21 19:53 */ public Element getTargetElement(String targetKey, Element parentElement) {Iterator iterator = parentElement.elementIterator();Element childElement = null;while (iterator.hasNext()) { Element element = (Element) iterator.next(); Attribute attribute = (Attribute) element.attributes().get(0); String key = attribute.getValue(); if (key.equals(targetKey) || key == targetKey) {childElement = element;break; }}return childElement; }}

核心類(lèi):用多邊形繪圖

package com.gwhn.Util;import com.gwhn.entity.CutProperty;import org.locationtech.jts.geom.Coordinate;import org.locationtech.jts.geom.Geometry;import org.locationtech.jts.geom.MultiPolygon;import java.awt.*;import java.awt.image.BufferedImage;import java.util.List;/** * @author banxian * @date 2021/6/28 12:37 */public class PolygonUtil { ImageUtils imageUtils = new ImageUtils(); TxtUtil txtUtil = new TxtUtil(); /** * 根據(jù)多多邊形畫(huà)圖 * @param path * @param cutProperty * @param multiPolygonList * @return * @author banxian * @date: 2021/6/30 15:31 */ public void graphicsByMultiPolygon(String path, List<MultiPolygon> multiPolygonList, CutProperty cutProperty) {try { int imageWidth = cutProperty.getWidth();// 圖片的寬度 int imageHeight = cutProperty.getHeight();// 圖片的高度 BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = (Graphics2D) image.getGraphics(); graphics.setColor(Color.white); graphics.fillRect(0, 0, imageWidth, imageHeight); graphics.setColor(Color.black); int m = cutProperty.getBei() / 100; graphics.setStroke(new BasicStroke(cutProperty.getWeight() * m));//線(xiàn)條粗細(xì) Font font = new Font('宋體', Font.BOLD, 1200); graphics.setFont(font); graphics.drawString(cutProperty.getProvince(), 12500, 1500); for (MultiPolygon multiPolygon : multiPolygonList) {int num = multiPolygon.getNumGeometries();for (int i = 0; i < num; i++) { Geometry geometry = multiPolygon.getGeometryN(i); drawPolygon(geometry, cutProperty, graphics);} } imageUtils.createImage(path, image); System.out.println(path + ':' + font.getSize());} catch (Exception e) { e.printStackTrace();} } /** * 畫(huà)出一個(gè)多邊形 * @param geometry * @param cutProperty * @param graphics2D * @return * @author banxian * @date: 2021/6/28 12:37 */ public void drawPolygon(Geometry geometry, CutProperty cutProperty, Graphics2D graphics2D) {int m = cutProperty.getBei() / 100;Double xtemp = Double.valueOf(cutProperty.getX() * m);Double ytemp = Double.valueOf(cutProperty.getY() * m);//處理飛地if (geometry.toString().contains('),')) { String geoStr = geometry.toString(); String tempStr = geoStr.substring(9, geoStr.length() - 1) + ','; while (tempStr.contains('),')) {String temp = tempStr.substring(0, tempStr.indexOf('),') + 2);tempStr = tempStr.substring(temp.length()).trim();Polygon polygon = txtUtil.getPolygonByStr(temp,cutProperty);graphics2D.drawPolygon(polygon); }} else { Coordinate[] coordinates = geometry.getCoordinates(); Polygon polygon = new Polygon(); Double x, y; for (int j = 0; j < coordinates.length; j++) {Coordinate coordinate = coordinates[j];x = coordinate.getX() * cutProperty.getBei() - xtemp;y = cutProperty.getRightborder() * m - coordinate.getY() * cutProperty.getBei() - ytemp;polygon.addPoint(x.intValue(), y.intValue()); } graphics2D.drawPolygon(polygon);} }}

工具類(lèi):處理特殊的邊界,一般由飛地、島嶼組成

package com.gwhn.Util;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.gwhn.entity.CutProperty;import java.awt.*;import java.io.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author banxian * @date 2021/5/10 15:57 */public class TxtUtil { public Polygon getPolygonByStr(String polygonStr,CutProperty cutProperty) {polygonStr = polygonStr.substring(1, polygonStr.length() - 2) + ',';List<String> polygonStrList = new ArrayList<>();while (polygonStr.contains(',')) { String pointStr = polygonStr.substring(0, polygonStr.indexOf(',')).trim(); polygonStrList.add(pointStr); polygonStr = polygonStr.substring(polygonStr.indexOf(',') + 1);}return transPointStrToPolygon(polygonStrList, cutProperty); } public Polygon transPointStrToPolygon(List<String> polygonStrList,CutProperty cutProperty) {int m = cutProperty.getBei() / 100;Double xtemp = Double.valueOf(cutProperty.getX() * m);Double ytemp = Double.valueOf(cutProperty.getY() * m);Polygon polygon = new Polygon();for (String pointStr : polygonStrList) { Double x = Double.parseDouble(pointStr.substring(0, pointStr.indexOf(' '))); Double y = Double.parseDouble(pointStr.substring(pointStr.indexOf(' ')).trim()); x = x * cutProperty.getBei() - xtemp; y = cutProperty.getRightborder()*m - y * cutProperty.getBei()-ytemp; polygon.addPoint(x.intValue(), y.intValue());}return polygon; } //讀取json文件 public String readJsonFile(String fileName) {String jsonStr = '';try { File jsonFile = new File(fileName); FileReader fileReader = new FileReader(jsonFile); Reader reader = new InputStreamReader(new FileInputStream(jsonFile), 'utf-8'); int ch = 0; StringBuffer sb = new StringBuffer(); while ((ch = reader.read()) != -1) {sb.append((char) ch); } fileReader.close(); reader.close(); jsonStr = sb.toString(); return jsonStr;} catch (IOException e) { e.printStackTrace(); return null;} } /** * 讀取json獲取圖片剪切參數(shù) * * @param * @return * @author banxian * @date: 2021/6/25 8:16 */ public Map<String, CutProperty> getCutPropertyMap() {String path = Thread.currentThread().getContextClassLoader().getResource('property.json').getPath();//獲取項(xiàng)目根目錄String s = readJsonFile(path);JSONObject jsonObject = JSON.parseObject(s);JSONArray jsonArray = jsonObject.getJSONArray('properties');//構(gòu)建JSONArray數(shù)組List<CutProperty> cutPropertyList = jsonArray.toJavaList(CutProperty.class);Map<String, CutProperty> cutPropertyMap = new HashMap();for (CutProperty cutProperty : cutPropertyList) { cutPropertyMap.put(cutProperty.getProvince(), cutProperty);}return cutPropertyMap; } }

核心類(lèi):從讀到的shp文件數(shù)據(jù)中提取字符串轉(zhuǎn)化為多多邊形,繪圖

package com.gwhn.controller;import com.gwhn.Util.PolygonUtil;import com.gwhn.Util.TxtUtil;import com.gwhn.Util.YereeXmlContext;import com.gwhn.entity.CutProperty;import com.gwhn.geotools.GeometryCreator;import com.gwhn.geotools.ShapeUtil;import org.locationtech.jts.geom.MultiPolygon;import org.opengis.feature.Property;import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * @author banxian * @date 2021/6/1 8:12 */public class ShpPictureController { PolygonUtil polygonUtil = new PolygonUtil(); TxtUtil txtUtil = new TxtUtil(); Map<String, CutProperty> cutPropertyMap = txtUtil.getCutPropertyMap(); /** * 根據(jù)國(guó)家shp文件畫(huà)出中國(guó)地圖 * @param * @return * @author banxian * @date: 2021/6/28 12:35 */ public void doNation() {YereeXmlContext yereeXmlContext = new YereeXmlContext();GeometryCreator geometryCreator = new GeometryCreator();String shapePath = yereeXmlContext.getXmlValue('Http', 'FileExport', 'ProvincePath') + 'province.shp';ShapeUtil shapeUtil = new ShapeUtil();try { List<Property> propertyList = shapeUtil.SHPRead(shapePath); List<MultiPolygon> multiPolygonList = new ArrayList<>(); for (int i = 0; i * 8 < propertyList.size(); i++) {Property property = propertyList.get(i * 8);String valueStr = property.getValue().toString();MultiPolygon multiPolygon = geometryCreator.createMulPolygonByWKT(valueStr);multiPolygonList.add(multiPolygon); } String path = yereeXmlContext.getXmlValue('Http', 'FileExport', 'ExportPath'); File newFileDir = new File(path); //如果不存在 則創(chuàng)建 if (!newFileDir.exists()) {newFileDir.mkdirs(); }// String picturName = imageUtils.genImageName() + '.jpg'; String picturName = '中國(guó).jpg'; CutProperty cutProperty = cutPropertyMap.get('中國(guó)'); polygonUtil.graphicsByMultiPolygon(path + picturName, multiPolygonList, cutProperty);} catch (Exception e) { e.printStackTrace();}System.out.println('完成'); } /** * 根據(jù)分省shp文件畫(huà)出地圖 * @param * @return * @author banxian * @date: 2021/6/28 12:35 */ public void doProvince() {YereeXmlContext yereeXmlContext = new YereeXmlContext();GeometryCreator geometryCreator = new GeometryCreator();ShapeUtil shapeUtil = new ShapeUtil();String shapeDirPath = yereeXmlContext.getXmlValue('Http', 'FileExport', 'ProvinceShapePath');List<File> fileList = new ArrayList<>();fileList = getFileList(shapeDirPath, fileList);for (int j = 0; j < fileList.size(); j++) { File file = fileList.get(j); if (file.getName().contains('.shp')) {File parentFile = file.getParentFile();String province = parentFile.getName();System.out.println(province);int size = 7;if (province.equals('湖北') || province == '湖北' || province.equals('安徽') || province == '安徽') { size = 10;}CutProperty cutProperty = cutPropertyMap.get(province);try { List<Property> propertyList = shapeUtil.SHPRead(file.getPath()); List<MultiPolygon> multiPolygonList = new ArrayList<>(); for (int i = 0; i * size < propertyList.size(); i++) {String valueStr = propertyList.get(i * size).getValue().toString();MultiPolygon multiPolygon = geometryCreator.createMulPolygonByWKT(valueStr);multiPolygonList.add(multiPolygon); } String path = yereeXmlContext.getXmlValue('Http', 'FileExport', 'ExportPath'); ; File newFileDir = new File(path); //如果不存在 則創(chuàng)建 if (!newFileDir.exists()) {newFileDir.mkdirs(); } String picturName = province + '.jpg'; polygonUtil.graphicsByMultiPolygon(path + picturName, multiPolygonList, cutProperty);} catch (Exception e) { e.printStackTrace();} }}System.out.println('完成'); } /** * 獲取shp文件集合 * @param dirPath * @param fileList * @return * @author banxian * @date: 2021/6/28 12:36 */ public List<File> getFileList(String dirPath, List<File> fileList) {File dir = new File(dirPath);if (!dir.exists()) { dir.mkdirs();}for (File file : dir.listFiles()) { if (!file.isDirectory()) {fileList.add(file); } else {getFileList(file.getPath(), fileList); }}return fileList; }}

地圖坐標(biāo)截取參數(shù)

{ 'properties': [ { 'province': '中國(guó)', 'x': 8000, 'y': 18600, 'width': 25000, 'height': 15000, 'weight': 5.0, 'bei':350, 'rightborder': 25000, 'stringsize': 500 }, { 'province': '上海', 'x': 12050, 'y': 21800, 'width': 23000, 'height': 16000, 'weight': 0.8, 'bei': 10000, 'rightborder': 25000, 'stringsize': 500 }, { 'province': '云南', 'x': 9700, 'y': 22000, 'width': 25000, 'height': 25000, 'weight': 2.0, 'bei': 2500, 'rightborder': 25000, 'stringsize': 50 }, { 'province': '內(nèi)蒙古', 'x': 9000, 'y': 19000, 'width': 25000, 'height': 15000, 'weight': 3.0, 'bei': 600, 'rightborder': 25000, 'stringsize': 180 }, { 'province': '北京', 'x': 11515, 'y': 20830, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 10000, 'rightborder': 25000, 'stringsize': 600 }, { 'province': '吉林', 'x': 12100, 'y': 20200, 'width': 25000, 'height': 17000, 'weight': 2.0, 'bei': 2100, 'rightborder': 25000, 'stringsize': 40 }, { 'province': '四川', 'x': 9600, 'y': 21500, 'width': 25000, 'height': 20000, 'weight': 2.0, 'bei': 1900, 'rightborder': 25000, 'stringsize': 40 }, { 'province': '天津', 'x': 11600, 'y': 20920, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 10000, 'rightborder': 25000, 'stringsize': 600 }, { 'province': '寧夏', 'x': 10400, 'y': 20960, 'width': 20000, 'height': 25000, 'weight': 1.0, 'bei': 4210, 'rightborder': 25000, 'stringsize': 40 }, { 'province': '安徽', 'x': 11350, 'y': 21500, 'width': 25000, 'height': 22000, 'weight': 1.0, 'bei': 3300, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '山東', 'x': 11430, 'y': 21050, 'width': 25000, 'height': 20000, 'weight': 1.0, 'bei': 2900, 'rightborder': 25000, 'stringsize': 35 }, { 'province': '山西', 'x': 10900, 'y': 20850, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 3500, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '廣東', 'x': 10750, 'y': 22400, 'width': 25000, 'height': 15000, 'weight': 1.0, 'bei': 2200, 'rightborder': 25000, 'stringsize': 40 }, { 'province': '廣西', 'x': 10400, 'y': 22200, 'width': 25000, 'height': 18000, 'weight': 1.0, 'bei': 2600, 'rightborder': 25000, 'stringsize': 35 }, { 'province': '新疆', 'x': 7200, 'y': 19800, 'width': 25000, 'height': 20000, 'weight': 2.0, 'bei': 900, 'rightborder': 25000, 'stringsize': 150 }, { 'province': '江蘇', 'x': 11550, 'y': 21400, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 4000, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '江西', 'x': 11250, 'y': 21950, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 4000, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '河北', 'x': 11250, 'y': 20600, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 3000, 'rightborder': 25000, 'stringsize': 40 }, { 'province': '河南', 'x': 10900, 'y': 21200, 'width': 25000, 'height': 23000, 'weight': 1.0, 'bei': 2700, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '浙江', 'x': 11800, 'y': 21800, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 5000, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '湖北', 'x': 10800, 'y': 21500, 'width': 25000, 'height': 20000, 'weight': 1.0, 'bei': 3000, 'rightborder': 25000, 'stringsize': 30 }, { 'province': '湖南', 'x': 10800, 'y': 21900, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 3500, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '甘肅', 'x': 9000, 'y': 20300, 'width': 25000, 'height': 25000, 'weight': 2.0, 'bei': 1200, 'rightborder': 25000, 'stringsize': 70 }, { 'province': '福建', 'x': 11550, 'y': 22050, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 4000, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '西藏', 'x': 7500, 'y': 21000, 'width': 25000, 'height': 15000, 'weight': 1.5, 'bei': 1000, 'rightborder': 25000, 'stringsize': 100 }, { 'province': '貴州', 'x': 10350, 'y': 21900, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 3200, 'rightborder': 25000, 'stringsize': 35 }, { 'province': '遼寧', 'x': 11850, 'y': 20500, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 3300, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '重慶', 'x': 10500, 'y': 21700, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 4700, 'rightborder': 25000, 'stringsize': 20 }, { 'province': '陜西', 'x': 10450, 'y': 21000, 'width': 25000, 'height': 25000, 'weight': 1.0, 'bei': 2900, 'rightborder': 25000, 'stringsize': 25 }, { 'province': '青海', 'x': 8700, 'y': 20900, 'width': 25000, 'height': 15000, 'weight': 2.0, 'bei': 1500, 'rightborder': 25000, 'stringsize': 70 }, { 'province': '黑龍江', 'x': 12000, 'y': 19500, 'width': 25000, 'height': 18000, 'weight': 1.0, 'bei': 1500, 'rightborder': 25000, 'stringsize': 60 } ]}

測(cè)試類(lèi)

public static void main(String[] args) {try { ShpPictureController shpPictureController = new ShpPictureController();// shpPictureController.doProvince(); shpPictureController.doNation();} catch (Exception e) { e.printStackTrace();} }

最終畫(huà)出的圖片效果如下:

java使用GeoTools讀取shp文件并畫(huà)圖的操作代碼

到此這篇關(guān)于java使用GeoTools讀取shp文件并畫(huà)圖的操作代碼的文章就介紹到這了,更多相關(guān)java讀取shp文件并畫(huà)圖內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 精品国产乱码久久久 | 中文字幕在线播放日韩 | 91精品国产高清一区二区三密臀 | 日韩欧美极品 | 看黄网站在线 | 成人激烈床戏免费观看网站 | 偷偷操99 | 色免费视频 | av无码精品一区二区三区四区 | 国产99久久久国产精品免费看 | 欧美日韩中文字幕在线视频 | 男女av在线| 亚洲精品合集 | 国产两女互慰高潮视频在线观看 | 日本少妇作爱视频 | 久久99精品久久久久久 | 色老头在线一区二区三区 | 欧美大片抢先看 | 无码免费一区二区三区免费播放 | 日韩成人一级 | 无套内射视频囯产 | 久久2019| 娇小xxxx性开放国产精 | 亚洲日日骚 | 成人在线视频网 | 欧美在线一区二区三区 | 久久久www免费人成精品 | 日日夜夜综合网 | 国产精品永久免费视频 | 亚洲国产精一区二区三区性色 | 人妻丰满熟妇av无码区免 | 美女屁股无遮挡 | 毛片tv网站无套内射tv网站 | 国产精品原创av片国产日韩 | 少女韩国电视剧在线观看完整 | 国产成人精品综合 | 日韩在线视屏 | 日本一二三区视频在线 | 15p亚洲 | 7k7k在线看片午夜 | 欧美大荫蒂xxx| 成人免费av网站 | 亚洲丝袜天堂 | 国产精品嫩草影院com | 日本黄a| 男女三级视频 | 我爱我色成人网 | 九九久久精品国产 | 一区二区视屏 | 乌克兰少妇videos高潮 | 中文成人在线 | 五月天婷婷在线视频 | 伦理片免费完整片在线观看 | 午夜精品99 | 亚洲精品系列 | 激烈的性高湖波多野结衣 | 亚洲专区 变态 另类 | 天天躁日日躁狠狠躁视频2021 | 人成免费在线视频 | 久草在线视频精品 | jizz欧美大全| 东北妇女精品bbwbbw | 狠狠色综合激情丁香五月 | 国产不卡网 | 日本人jizz亚洲人 | 色噜噜狠狠色综合中国 | 天天爱夜夜爽 | 国产传媒毛片精品视频第一次 | 四虎亚洲精品 | 国产激情久久久久久 | 国产精品毛片一区二区在线看舒淇 | 欧美一区2区三区4区公司 | 午夜a区 | 深夜视频在线播放 | 人妻丰满熟妇无码区免费 | 女性无套免费网站在线看动漫 | 四川妇女偷人毛片大全 | 香蕉一级视频 | 亚洲 欧美 清纯 校园 另类 | 91在线精品视频 | 国产一区免费在线观看 | 婷婷四房综合激情五月 | 国产寡妇亲子伦一区二区 | 国产av一区二区三区 | 丁香六月久久 | 麻豆丰满少妇chinese | 久久成年视频 | 中文字幕精 | 亚洲第8页 | 亚洲国产精一区二区三区性色 | 暖暖免费观看日本版 | 午夜a级片 | 久久精品在线观看 | 奇米影视7777狠狠狠狠色 | 丰满少妇被猛男猛烈进入久久 | 中文字幕精品在线观看 | ⅹⅹⅹ黄色片视频 | 欧美有码在线观看 | 影音先锋在线国产 | 麻豆色淫网站av水蜜桃三级 | 国产又大又粗又猛又爽的视频 | 国产精品自产拍高潮在线观看 | 天天操夜夜操夜夜操 | 久久精品男人的天堂 | 在线观看午夜视频 | 暖暖视频日本在线观看 | 国产欧美精品在线观看 | 99久久伊人| 刺激鲁cijilu在线观看 | 国产成人a在线观看网站站 又大又粗又爽免费视频a片 | 久久久久久亚洲精品 | 亚洲国产精品成人天堂 | 18禁真人抽搐一进一出免费 | 亚洲国产精品成人综合久久久久久久 | 一个人看的www日本高清视频 | 亚洲国产精品福利 | 男女瑟瑟网站 | 日本视频久久 | 国产精品午夜在线观看 | 精品人人 | 日本19禁啪啪吃奶大尺度 | 久久国产免费 | 日本特黄特色aaa大片免费 | 亚洲精品一区二区五月天 | 日韩欧美三级在线 | 日韩特级黄色片 | 在线观看免费小视频 | 日本最大色倩网站www | 黄色大片91 | 日韩精品视频一二三 | 久久99精品久久久久久国产越南 | 性国产精品| 午夜论坛 | 欧美午夜精品久久久久久浪潮 | 亚洲国产精品无码一区二区三区 | 五月天综合激情 | 精品国产亚洲一区 | 肉大捧一进一出免费视频 | 精品一区二区三区国产 | 色婷婷激情av | 18禁黄网站免费 | 精品人伦一区二区三区潘金莲 | 久久久影院| 亚洲欧洲av | 亚洲aⅴ在线无码播放毛片一线天 | 99色在线观看 | 亚洲男人的天堂在线视频 | 中文字幕亚洲无线码 | 国产精品福利久久 | 日本少妇喷水视频 | 在线人人车操人人看视频 | dy888夜精品国产专区 | 极品尤物魔鬼身材啪啪仙踪林 | 久久天天躁夜夜躁狠狠85麻豆 | 另类专区欧美 | 伊人久久大香线焦av综合影院 | 淫视频网站| 999精品在线观看 | aa在线视频 | 伊人春色网 | 亚洲一二三在线 | 在线观看免费人成视频色9 在线观看的网站 | 乱女伦露脸对白在线播放 | 亚洲精品一区二区三 | 夜夜躁人人爽天天天天大学生 | 欧美一区二区三区四区在线观看地址 | 国产一伦一伦一伦 | 欧美成人一二区 | 涩涩屋www视频在线观看高清 | 欧美一区二区三区性视频 | 国产一区二区99 | 国产中文字幕免费 | 无套在线观看 | 337p粉嫩日本欧洲亚洲大胆 | 国产交换配乱淫视频a免费 国产精成人品免费观看 | 男女裸体做爰爽爽全过程软件 | 成年女人色毛片 | 亚洲欧美日韩国产成人精品影院 | 99久久精品免费看国产免费粉嫩 | 丰满岳跪趴高撅肥臀尤物在线观看 | 久久96国产精品久久久 | 久久综合婷婷 | 亚洲精品一区二区在线观看 | 一级视频片 | 午夜影院福利社 | 国产两女互慰高潮视频在线观看 | 人人妻人人澡人人爽超污 | 亚洲日本久久 | 亚洲视频综合 | 国产av无码专区亚洲版综合 | 有码在线视频 | 欧洲av在线播放 | 亚洲日本欧美 | 天天天天噜在线视频 | 一区二区三区日韩视频在线观看 | 国产午夜精品久久久久久久 | 草草影院国产 | 麻花豆传媒mv在线观看网站 | 法国极品成人h版 | 精品国产99久久久久久宅男i | 国产91精品一区二区麻豆网站 | 亚洲成av人片香蕉片 | 日本视频在线免费观看 | 爽爽av| 国产亚洲精品第一综合麻豆 | 少妇高潮一区二区三区99小说 | 久久艹中文字幕 | 国产精品久久久久久av福利软件 | 国产精品久久久久久久久人妻 | 精品国产_亚洲人成在线 | 国产自啪精品视频网站丝袜 | 在线播放第一页 | 亚洲人精品午夜射精日韩 | 日韩美女网站 | 性无码专区无码片 | 在线欧美中文字幕农村电影 | av高清在线| 99久久精品日本一区二区免费 | 国产欧美大片 | 91爱爱·com | 偷拍亚洲 | 香蕉久久久久久久av网站 | 怡红院最新网址 | 五十路熟妇亲子交尾 | 久久久影院 | 国产欧美日韩精品丝袜高跟鞋 | 精品一区二区三区免费毛片 | 黄色成人在线观看 | 成人av免费观看 | 少妇呻吟白浆高潮啪啪69 | 成人国产精品齐天大性 | 日本中文字幕有码 | 永久免费无码网站在线观看个 | 欧产日产国产精品98 | av区无码字幕中文色 | 久久国产一级片 | 日日躁夜夜摸月月添添添 | 久久亚洲精品中文字幕冲田杏梨 | 国产精品一区二区吃奶在线观看 | 色眯眯视频 | 91爱爱影视| 在线观看一区二区三区四区 | 淫欲av| 国产午夜成人免费看片 | 久久久久久久久久久久国产 | 日韩欧美啪啪 | 日韩乱码人妻无码系列中文字幕 | 欧美精品久久久久久久免费软件 | 在线视频毛片 | 一本久道久久综合狠狠爱 | 欧美怡春院一区二区三区 | 久久天堂av综合合色蜜桃网 | 欧美日韩在线看 | 亚洲人成综合网站7777香蕉 | 亚洲精品国产熟女久久久 | 中文字幕日日 | 国产欧美日韩精品一区二区三区 | 台湾全黄色裸体视频播放 | 亚洲一区二区三区婷婷 | 国产肉体xxxx裸体784大胆 | 国产精品一线 | 国产老头和老太xxxxx视频 | 日韩在线成人 | 91橘梨纱中出体验在线观看 | 成人av日韩 | 超碰影院在线观看 | 免费激情视频网站 | 丰满妇女毛茸茸刮毛 | 久草青青草| 国产日产欧产精品浪潮的免费功能 | 国内精品久久久久久无码不卡 | 国模叶桐尿喷337p人体 | 性视频网站免费 | 欧洲vi一区二区三区 | 亚洲黄色一区 | 亚洲在线天堂 | 日韩午夜影院 | 中文在线第一页 | av中文在线 | 99久久精品无免国产免费 | 欧美特一级 | 视频二区欧美 | 久草女人 | 中文字幕网站在线观看 | 国产三级理论 | 91资源站| 爱爱的免费视频 | 国产日韩精品在线观看 | 欧美性猛交丰臀xxxxx网站 | 亚洲性无码av中文字幕 | 欧美大肥婆大肥bbbbb | 激情综合激情五月 | 国产浮力视频 | 能直接看的av | 最新av不卡 | 欧美日韩一卡二卡 | 亚洲自拍偷拍另类 | 成人黄色免费网址 | 国产成人精品日本亚洲i8 | 印度午夜性春猛xxx交 | 久久久久欧美精品 | 国产香蕉尹人视频在线 | 久久精品一区二区三 | 在线成人av | 伊人久久伊人 | 丁香六月伊人 | 色妞干网| 免费动漫吸乳羞羞网站视 | 国产传媒资源网站 | 少妇浪荡h肉辣文大全69 | 久久av无码精品人妻出轨 | 亚洲日韩国产一区二区三区 | 亚洲美女久久 | 亚洲免费色 | 国产精品99久久久久久宅男 | 国产视频a在线观看 | 影音先锋男人av橹橹色 | 名人明星三级videos | 国产精品偷乱一区二区三区 | 精品国产一区二区三区四区精华 | 日本aaaa级毛片| 丰满人妻被黑人猛烈进入 | 动漫美女靠逼 | 中文字幕一区在线 | www亚洲www| 少妇影院y1111 | 一级国产国产一级 | 一本一本久久a久久精品综合小说 | 欧美视频一区在线 | 精品人妻二区中文字幕 | 18深夜在线观看免费视频 | 欧美成人久久久免费播放 | 91色呦呦| 国产男女爽爽爽免费视频 | hdhdhd69xxxxх| 亚洲亚洲人成综合网络 | 高清视频在线观看一区二区三区 | 亚洲乱亚洲 | 99热精品国产一区二区在线观看 | 成人午夜在线视频 | 操小妞| 香蕉97超级碰碰碰免费公开 | 香蕉久操 | 深夜av在线播放 | 欧美疯狂做受xxxxx高潮 | 新狼窝色av性久久久久久 | 欧美亚洲国产日韩 | 神马午夜麻豆 | 国产精品视频一区二区三区四区国 | 国产国拍亚洲精品av | 日韩av影片 | 美女131mm久久爽爽免费 | 风间由美一区二区 | 中文字幕永久 | 亚洲国产精品久 | 精品无码久久久久国产 | 国语粗话呻吟对白对白 | 天堂av片| 中文字幕 人妻熟女 | 亚洲人成网站18禁止 | 人妻在厨房被色诱 中文字幕 | 久久六六| 亚洲第一无码专区天堂 | 免费在线中文字幕 | 3344永久在线观看视频免费 | 亚洲一区精品二人人爽久久 | 欧美成人性生活 | 荫蒂添的好舒服视频囗交 | 国产精品亲子乱子伦xxxx裸 | 久久人人爽人人爽人人片亚洲 | 国产区一区二区 | 99国内精品久久久久久久夜夜嗨 | 极品福利在线 | 嫩草国产在线 | 成人性视频免费看的鲁片 | 天天操天天爽天天干 | 91avcn| 91视频国产免费 | 黑人操白妞 | 国产精品久久久对白 | 亚洲成人久久久久 | 欧美人与性动交α欧美精品 | 日韩视频不卡 | 婷婷激情五月综合 | 裸体性做爰免费视频网站 | 肉色丝袜一区二区 | 91精品久久久久久久久久 | 国产在线h | 动漫av在线免费观看 | 亚洲va在线va天堂xxxx中文 | 同性情a三级a三级a三级 | 男人天堂久久 | 亚洲激情视频在线 | 国产成人无码免费看片软件 | 亚洲一区中文 | 成年人看的羞羞网站 | 777米奇影视第四色 韩产日产国产欧产 | 鲁大师影院在线观看 | 免费国产黄网站在线观看 | 黄网站色视频免费观看 | 亚洲午夜无码久久久久 | 国产区在线观看视频 | 四虎在线永久免费观看 | 亚洲一区二区三区影院 | 美女裸奶100%无遮挡免费网站 | 国产成人综合久久精品免费 | 国产在线精品一区二区夜色 | 美日韩在线观看 | 成人无码视频在线观看网站 | 国产欧美wwwxj在线观看 | av污在线观看 | 久久婷婷网站 | 亚洲精品久久久久国产 | 天堂а√在线地址中文在线 | 一区二区三区四区在线 | 狠狠色噜噜狠狠狠狠米奇7777 | 国产激情久久久久久熟女老人av | 国产99久久久久久免费看 | 内射人妻视频国内 | 99九九热| 粉嫩粉嫩的虎白女18在线软件 | 大色综合色综合网站 | 午夜性刺激在线观看 | 欧美精品videos另类日本 | 另类小说色综合 | 午夜在线视频观看日韩17c | 超碰在线中文字幕 | 黄色男女 黄色a几 | 精品久久人人爽天天玩人人妻 | 亚洲v国产v欧美v久久久久久 | 欧美老熟 | 女人夜夜春 | 国产高清精品在线 | 久久精品66 | 医生强烈淫药h调教小说视频 | 99国产精品久久久久久久日本竹 | 免费看a网站 | 西西人体44www大胆无码 | 国产成人无码一二三区视频 | 豆麻视频在线免费观看 | www成人免费| 91九色porn| 好吊操这里有精品 | 丝袜脚交一区二区三区 | 麻豆精品一区二区 | 少妇专区 | 蜜桃视频在线观看免费视频网站www | 日本a视频 | 一本久久精品一区二区 | 国产成人免费一区二区三区 | 成人做爰高潮片免费看 | 天堂аⅴ在线最新版在线 | 国产欧美日韩二区 | 日韩精品蜜桃 | 精品免费国产一区二区 | 亚洲欧洲免费无码 | 欧美性插插| 91视频三区 | 波多野结衣丝袜 | 亚洲精品国产精品国自产观看 | 国产精品久久伊人 | wwwyoujizzcom国产| 亚洲欧美日韩中文在线制服 | 久久国产精品久久喷水 | 亚洲色图制服丝袜 | 亚洲国产精品婷婷 | 女同互慰高潮呻吟免费播放 | 网站一区二区 | 亚洲国产aⅴ精品一区二区 亚洲国产mv | 欧美色鬼 | 免费 成 人 黄 色 | 青青草免费公开视频 | 亚洲欧美国产一区二区三区 | 欧美乱妇高清无乱码一级特黄 | 国产清纯白嫩初高生在线观看性色 | 婷婷深爱五月 | 久久精品人人做人人爱爱站长工具 | 欧美人与性动交α欧美精品 | 国产产无码乱码精品久久鸭 | 国产美女爆我菊免费观看88av | 农村少妇一区二区三区四区五区 | 国产真实交换配乱淫视频, 国产真实精品久久二三区 国产真实乱免费高清视频 国产制服丝袜一区 | 欧美mv日韩mv国产网站 | 4438xx亚洲五月最大丁香 | 成人性做爰aaa片免费看 | 日本一码二码三码在线 | 精品日本一区二区三区免费 | 99re久久精品国产 | 色视频在线观看视频 | 麻豆安全免费网址入口 | 亚洲精品一区二区三区大桥未久 | 中文字幕1页 | 97精品人妻系列无码人妻 | 国产av无码专区亚洲a∨毛片 | 青青草青娱乐 | 国内一级黄色 | 日日摸日日碰夜夜爽无码 | 久久精品一二三 | 久久久久高清 | 少妇夜夜爽夜夜春夜夜高潮 | 久久精品丝袜高跟鞋 | 国产 字幕 制服 中文 在线 | 无码中文字幕人妻在线一区二区三区 | 米奇7777狠狠狠狠视频 | 澳门免费av | 欧美国产日韩视频 | 国产精品美女久久 | 7777久久亚洲中文字幕 | 国产精品偷乱一区二区三区 | 甄宓高h荡肉呻吟np 正在播放国产老头老太色公园 | 超碰在线99| 91免费看| 免费在线观看成年人视频 | 亚洲网站在线看 | 欧美国产一区二区三区激情 | 一区二区三区黄色片 | 婷婷四房综合激情五月 | 播五月婷婷 | 少妇人妻挤奶水中文视频毛片 | 国产福利一区在线 | 九九视频免费看 | 在线毛片观看 | 99久久婷婷国产精品综合 | 欧美aⅴ在线观看 | 亚洲射图 | 亚洲精品久久久久国产 | 亚洲а∨天堂久久精品2021 | 色噜噜狠狠一区二区三区果冻 | 999国产精品视频免费 | 成人动漫在线观看 | 影音先锋在线中文字幕 | 中文资源在线播放 | 精品国产一区二区三区小蝌蚪 | 国产亚洲精品久久久久久移动网络 | 欧美日本在线播放 | 日韩精品中文字幕一区二区 | 免费中文熟妇在线影片 | 国产精品入口网站7777 | 污视频网站免费 | 黄色免费网站观看 | 9·1·黄·色·视·频 | 深田咏美在线x99av | 免费a级片在线观看 | 婷婷六月天在线 | 日日干影院 | www成人网com| 99精品视频一区二区三区 | 欧洲美女高清视频 | 国产精品久久久久久久第一福利 | 少妇又色又紧又爽又刺激视频 | 91国偷自产一区二区开放时间 | 四虎精品一区二区免费 | 欧美又大又硬又粗bbbbb影院 | 91精品国产综合久久久蜜臀粉嫩 | 无人在线观看免费高清视频的优势 | xxx精品| 国内外成人免费视频 | 欧美精品成人久久 | jizz黑人| 精品国产乱码久久久久久影片 | 国产三级精品在线 | 亚洲一区二区在线播放 | 国产在线精品一区 | 美女福利片 | 国产成人免费av一区二区午夜 | 日韩精品久久一区二区 | 91福利在线免费观看 | 最新黄色网址在线观看 | 国产一区二区欧美日韩 | 国产成人免费ā片在线观看老同学 | 旅行的意义3在线观看韩国 绿帽av | 美女88av| 免费无码专区毛片高潮喷水 | 亚洲一区二区精品视频 | 果冻传媒mv国产董小宛主演是谁 | 最新在线黄色网址 | 欧美视频黄 | 人人爽人人片人人片av | 日韩夫妻性生活 | 19禁大尺度做爰无遮挡小说 | 男人一边吃奶一边做爰网站 | 上床视频在线观看 | 51av视频| 91视频这里只有精品 | 天天色天天干天天色 | 亚洲蜜臀av | 好吊色视频988gao在线观看 | 色男人在线 | 成人毛片视频在线播放 | 久久国产精品亚洲 | 国产亚洲精品久久久久久国模美 | 日日干夜夜草 | 欧美性猛交ⅹxxx乱大交妖精 | 欧美性生活网址 | 高清一区二区三区四区 | 一级一级黄色片 | 国产三级毛片视频 | 苍井空浴缸大战猛男120分钟 | 亚洲の无码国产の无码步美 | 99热在线精品国产观看 | 亚洲免费观看av | 无码办公室丝袜ol中文字幕 | 日韩精品一区三区 | 久久久精品免费 | 国内精产品∪v | 精品国产一二区 | 久久久久久久网 | 国产精品对白 | 黄色片网战 | 国产农村妇女毛片精品久久 | 自拍偷拍视频在线观看 | 香蕉久久av一区二区三区 | 欧美激情喷水 | 国产中文在线观看 | 丰满熟妇人妻av无码区 |