!!!!!! 取得点为 多边形的最小矩形里面的点。加入java进行第二次判断。
建表:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pnt` point DEFAULT NULL,
`pgn` polygon DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
插入数据:
INSERT INTO `test` VALUES ('12', GeomFromText('POINT(1 1)'), null);
INSERT INTO `test` VALUES ('11', GeomFromText('POINT(1 1)'), null);
INSERT INTO `test` VALUES ('1', GeomFromText('POINT(1 1)'), null);
INSERT INTO `test` VALUES ('2', GeomFromText('POINT(1 5)'), null);
INSERT INTO `test` VALUES ('3', GeomFromText('POINT(2 2)'), null);
INSERT INTO `test` VALUES ('4', GeomFromText('POINT(2 3)'), null);
INSERT INTO `test` VALUES ('5', GeomFromText('POINT(3 2)'), null);
INSERT INTO `test` VALUES ('8', GeomFromText('POINT(2 3)'), null);
INSERT INTO `test` VALUES ('7', GeomFromText('POINT(2 2)'), null);
INSERT INTO `test` VALUES ('9', GeomFromText('POINT(12 12)'), null);
INSERT INTO `test` VALUES ('10', null, null);
INSERT INTO `test` VALUES ('13', null, GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 7 5, 7 7, 5 7, 5 5))'));
INSERT INTO `test` VALUES ('14', null, GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'));
INSERT INTO `test` VALUES ('15', null, GeomFromText('POINT(4 4)'));
INSERT INTO `test` VALUES ('16', GeomFromText('POINT(4 4)'), null);
INSERT INTO `test` VALUES ('17', GeomFromText('POINT(4 4)'), null);
——————————————————————————————
插入点point:
INSERT INTO test VALUE ('17',GeomFromText('POINT(4 4)'),NULL);
插入点多边形:
INSERT INTO test VALUE ('14',NULL,GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0))'));
判断点在哪个多边形内:
select id from test where MBRContains(pgn, GeomFromText('Point(1 1)'));
Java 判断某个点是否在多边形内。
package com.fjxhx.business.dida.action; import java.awt.geom.Point2D; import java.util.ArrayList; import java.util.List; import com.fjxhx.business.dida.model.NetgridModel; import com.fjxhx.business.dida.model.OrderModel; import com.fjxhx.business.system.action.BaseAction; public class TestGis extends BaseAction{ /** * 判断当前位置是否在围栏内 */ //dlist为某个多变形的所有点 public boolean isInPolygon(OrderModel order,List<NetgridModel> dlist){ double p_x =Double.parseDouble(order.getLocationX()); double p_y =Double.parseDouble(order.getLocationY()); Point2D.Double point = new Point2D.Double(p_x, p_y); List<Point2D.Double> pointList= new ArrayList<Point2D.Double>(); for (NetgridModel enclosure : dlist){ double polygonPoint_x=Double.parseDouble(enclosure.getLonX()); double polygonPoint_y=Double.parseDouble(enclosure.getLatY()); Point2D.Double polygonPoint = new Point2D.Double(polygonPoint_x,polygonPoint_y); pointList.add(polygonPoint); } TestGis test = new TestGis(); return test.checkWithJdkGeneralPath(point,pointList); } /** * 返回一个点是否在一个多边形区域内 * @param point * @param polygon * @return */ private boolean checkWithJdkGeneralPath(Point2D.Double point, List<Point2D.Double> polygon) { java.awt.geom.GeneralPath p = new java.awt.geom.GeneralPath(); Point2D.Double first = polygon.get(0); p.moveTo(first.x, first.y); polygon.remove(0); for (Point2D.Double d : polygon) { p.lineTo(d.x, d.y); } p.lineTo(first.x, first.y); p.closePath(); return p.contains(point); } public static void main(String[] args) { /*OrderModel order=new OrderModel(); order.setLocationX("3"); order.setLocationY("1.5"); List<NetgridModel> nlist = new ArrayList<NetgridModel>(); NetgridModel ne =new NetgridModel(); NetgridModel ne1 =new NetgridModel(); NetgridModel ne2=new NetgridModel(); NetgridModel ne3=new NetgridModel(); ne.setLonX("2"); ne.setLatY("0"); nlist.add(0, ne); ne1.setLonX("0"); ne1.setLatY("2"); nlist.add(1, ne1); ne2.setLonX("2"); ne2.setLatY("4"); nlist.add(2, ne2); ne3.setLonX("4"); ne3.setLatY("2"); nlist.add(3, ne3); TestGis test = new TestGis(); System.out.println(test.isInPolygon(order, nlist));*/ } }
相关推荐
在矢量多边形区域中,一个坐标点的位置是否在区域内 算法: C#代码,适用于任意多边形(凹凸多边形),但是没有考虑实际误差范围的情况(应用在实际问题解决中,接近区域一定范围是可以忽略的,这个误差范围考虑后算法的...
在计算机图形学和地理信息系统(GIS)中,判断一个点是否位于一个多边形内部是一个常见的问题。本示例是基于SuperMap iClient 6R for JavaScript的开发模式,该库是一个强大的Web GIS开发工具,提供了丰富的空间分析...
MySQL的GIS功能不仅支持常见的地理空间数据类型如点(Point)、线(LineString)、多边形(Polygon)等,还提供了丰富的空间函数,如计算距离(ST_Distance)、判断位置关系(ST_Within、ST_Intersects)等功能,...
通过Oracle Spatial,用户可以将地图数据如矢量图层(点、线、多边形)、栅格图层等转换为数据库中的空间对象,并进行空间操作。 "GIS地图自动导入Oracle空间数据库的全套工具"通常是一组脚本、应用程序或服务,...
转换后的数据可以在MySQL中进行复杂的地理空间查询,例如,搜索某个区域内的点,找出两个地理元素之间的距离,或者分析地理特征的分布情况。这在地理信息系统、城市规划、环境科学、交通运输等领域都有广泛应用。 ...
【shp2mysql工具】是一种专门用于将地理信息系统(GIS)中的Shapefile(.shp)格式数据转换并导入到MySQL空间数据库的应用程序。Shapefile是Esri公司开发的一种广泛使用的矢量数据格式,通常包含地理坐标和属性信息...
SHP文件是地理信息系统(GIS)中常用的一种矢量数据格式,用于存储地理空间特征,如点、线和多边形。而MySQL是一种流行的关系型数据库管理系统,用于存储和管理结构化数据。 描述“将shp格式的文件转换为mysql可以...
这种格式包含了地理空间对象的信息,如点、线和多边形。在需要将这些数据集成到关系数据库系统,如MySQL时,我们需要进行数据转换。本文将详细介绍如何将.shp文件导入到MySQL数据库,并提供相关的代码实现。 首先,...
这个特定的JAR文件提供了对MySQL数据库的适配器,使得GeoServer能够识别和处理MySQL中的几何类型,如点、线和多边形。它也支持MySQL特定的空间函数,使得空间查询和操作变得更加便捷。 `mysql-readme.txt`文件通常...
KingbaseES V8版本能够替代诸如Oracle、MySQL等国外数据库产品,满足各类组织机构在管理信息系统、业务及生产系统、决策支持系统等方面进行国产化改造升级的需求。 #### 第二章 KingbaseES GIS 数据库迁移方案 GIS...
在GIS中,Perl可以用于读取、处理和转换各种空间数据格式,比如在本例中,可能用于解析Shapefile并构建SQL语句来插入到MySQL数据库。 5. **GIS数据导入/导出**:GIS软件通常支持多种数据格式的导入和导出,shp2...
在KingbaseES GIS的数据类型中,包括了矢量数据、栅格数据以及三维数据。矢量数据由点、线、面等几何对象组成,支持单个对象及集合对象集。栅格数据利用像元值来表达地理信息,KingbaseES支持GDAL格式,如tif、img等...
3. **边界信息**:商圈的边界可能用多边形或者一系列坐标点来定义,这有助于计算商圈内的面积,以及判断其他点是否在商圈范围内。 4. **商业信息**:商圈内可能包含各类商业实体,如商场、餐馆、酒店等,这些实体的...
在Visual C++中开发GIS系统,主要涉及以下几个方面的知识点: 1. **C++基础知识**:首先,你需要掌握C++编程语言的基本语法、类和对象、指针、函数、模板等核心概念,这是使用任何C++开发工具的基础。 2. **MFC...
在这个例子中,GIS主要体现在对Shapefile数据的处理上。 3. **Shapefile (shp)**: Shapefile是Esri公司开发的一种常见的地理空间数据格式,用于存储地理实体,如点、线和多边形。每个Shapefile通常包括.shp(几何...
该存储库仍在开发中。 层的时空数据读取器和写入器(实际上是JavaPairRDD): Postgis CSV档案(wkt中的几何图形) Shp(仅限读者) MongoDB(仅作家) ES MySQL Platform Reader(用于读取我们的大...
在FWtools 2.4.7中, ogr2ogr可以用于将shapefile数据转换为MySQL的spatial扩展格式,从而实现GIS数据与数据库的交互。 4. **命令行接口** FWtools的全部功能都可通过命令行界面来调用,这赋予了高级用户和开发者...
在本案例中,这些中心点信息可能存储在SQL脚本中,可以通过SQL查询来获取和处理。 “边界数据”则是指行政区域的地理边界,通常以多边形的形式表示。这些数据描述了行政区域的形状和范围,可以用于绘制行政区域地图...
在GIS中,点、线和面是基础的空间数据元素,用于表示地图上的各种地理实体,如城市、道路、河流等。在本实习项目中,我们将探讨如何使用SQL与空间数据库交互,实现这些几何对象的存储和检索。 首先,我们需要了解...
在数据库中存储和查询地理数据时,可以利用MySQL的Spatial函数,如ST_GeomFromText用于创建几何对象,ST_Contains用于检查一个几何对象是否包含另一个,以及ST_Distance计算两个几何对象之间的距离等。这样,你可以...