电子商务网站建设专业主修课程国外h5分享网站
web/
2025/10/8 4:20:22/
文章来源:
电子商务网站建设专业主修课程,国外h5分享网站,php论坛网站建设教程,网站的文章标题太短怎么弄文章目录 前言一、geometry是什么#xff1f;二、geometry常用函数1.OGC标准函数①管理函数②几何对象关系函数③几何对象处理函数④几何对象存取函数⑤几何对象构造函数 2.PostGIS扩展函数①管理函数②几何操作符③几何量测函数④几何对象输出⑤几何对象创建⑥几何对象编辑⑦… 文章目录 前言一、geometry是什么二、geometry常用函数1.OGC标准函数①管理函数②几何对象关系函数③几何对象处理函数④几何对象存取函数⑤几何对象构造函数 2.PostGIS扩展函数①管理函数②几何操作符③几何量测函数④几何对象输出⑤几何对象创建⑥几何对象编辑⑦线性参考⑧杂项功能函数 总结 前言
当涉及到处理空间数据如地理位置、地图、几何形状等时数据库中的Geometry函数成为了不可或缺的工具。Geometry函数提供了各种功能和操作使得在数据库中存储和查询空间数据变得更加便捷和灵活。这些函数允许我们对几何对象进行创建、修改、分析和查询从而能够处理和展示与地理位置相关的信息。
在数据库中Geometry函数的使用可以涵盖多个方面例如 几何对象的创建和存储Geometry函数允许我们创建和存储各种几何对象如点(Point)、线(Line)、多边形(Polygon)等。通过这些函数我们可以定义和保存空间数据以便日后进行查询和分析。 几何对象的编辑和变换Geometry函数提供了丰富的功能来编辑和变换几何对象。我们可以通过函数调整几何对象的大小、位置和形状进行平移、旋转、缩放等操作以满足特定需求。 空间关系和拓扑分析Geometry函数还支持对几何对象之间的空间关系进行分析。我们可以检查两个几何对象是否相交、是否包含于某个区域、是否相邻等。这些分析可以用于空间查询和空间数据挖掘。 空间索引和查询优化Geometry函数允许我们创建空间索引以提高对空间数据的查询性能。通过合理地使用索引可以加快空间查询的速度提高整体数据库的效率。
需要注意的是不同的数据库系统对Geometry函数的支持和语法可能会有所差异。一些主流数据库系统如MySQL、PostgreSQL和Oracle都提供了自己的Geometry函数库同时也有一些开源的空间数据库系统如PostGIS专注于提供更丰富的Geometry函数和功能。
综上所述Geometry函数在数据库中扮演着重要的角色为处理和分析空间数据提供了强大的工具。通过合理地应用这些函数我们能够更好地利用数据库来存储、查询和分析与地理位置相关的信息从而实现更多样化和细致化的数据操作。 一、geometry是什么
Geometry类型是一种在数据库中用于存储和处理空间数据的数据类型。它是一种用于表示几何对象如点、线、多边形等的结构化数据类型。在数据库系统中常见的几何类型包括Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon等。
每个几何类型都具有特定的结构和属性可以用来表示不同的空间对象。例如Point表示一个点由具体的坐标组成LineString表示一条连续的线段由多个点按顺序连接而成Polygon表示一个封闭的区域由多个边界线段组成并且具有内部和外部区域。
几何类型的存储和操作可以在数据库系统中进行。数据库系统通常提供了相关的函数和操作符来处理几何类型数据例如计算几何对象之间的距离、判断两个几何对象是否相交、获取几何对象的边界等。这些函数和操作符可以用于查询和分析空间数据并支持地理信息系统GIS和其他空间应用的开发。
几何类型的使用可以使数据库系统具备空间分析和空间查询的能力使得存储和处理与地理位置相关的数据更加方便和高效。数据库系统如PostgreSQL、MySQL、Oracle等都提供了几何类型的支持并且通常还提供了对应的几何函数库以便进行更复杂的几何操作和分析。
需要注意的是不同的数据库系统对几何类型的支持和实现可能会有所不同因此在具体开发中需要查阅相关数据库文档以了解特定数据库系统的几何类型和函数的使用方法。
二、geometry常用函数
总结几何常用函数的目的是提供开发人员一个方便的参考和指南帮助他们更好地理解、学习和应用这些函数。通过简明扼要地总结函数的功能、用法和最佳实践这个资源可以帮助开发人员快速查找和调用所需的几何函数促进他们对几何数据处理的理解和应用能力以及遵循标准化和最佳实践从而提高开发效率和代码质量。
1.OGC标准函数
①管理函数
添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns() 给几何对象设置空间参考在通过一个范围做空间查询时常用 ST_SetSRID(geometry, integer)
②几何对象关系函数
获取两个几何对象间的距离 ST_Distance(geometry, geometry) 如果两个几何对象间距离在给定值范围内则返回TRUE ST_DWithin(geometry, geometry, float) 判断两个几何对象是否相等 比如LINESTRING(0 0, 2 2)和LINESTRING(0 0, 1 1, 2 2)是相同的几何对象 ST_Equals(geometry, geometry) 判断两个几何对象是否分离 ST_Disjoint(geometry, geometry) 判断两个几何对象是否相交 ST_Intersects(geometry, geometry) 判断两个几何对象的边缘是否接触 ST_Touches(geometry, geometry) 判断两个几何对象是否互相穿过 ST_Crosses(geometry, geometry) 判断A是否被B包含 ST_Within(geometry A, geometry B) 判断两个几何对象是否是重叠 ST_Overlaps(geometry, geometry) 判断A是否包含B ST_Contains(geometry A, geometry B) 判断A是否覆盖 B ST_Covers(geometry A, geometry B) 判断A是否被B所覆盖 ST_CoveredBy(geometry A, geometry B) 通过DE-9IM 矩阵判断两个几何对象的关系是否成立 ST_Relate(geometry, geometry, intersectionPatternMatrix) 获得两个几何对象的关系DE-9IM矩阵 ST_Relate(geometry, geometry)
③几何对象处理函数
获取几何对象的中心 ST_Centroid(geometry) 面积量测 ST_Area(geometry) 长度量测 ST_Length(geometry) 返回曲面上的一个点 ST_PointOnSurface(geometry) 获取边界 ST_Boundary(geometry) 获取缓冲后的几何对象 ST_Buffer(geometry, double, [integer]) 获取多几何对象的外接对象 ST_ConvexHull(geometry) 获取两个几何对象相交的部分 ST_Intersection(geometry, geometry) 将经度小于0的值加360使所有经度值在0-360间 ST_Shift_Longitude(geometry) 获取两个几何对象不相交的部分A、B可互换 ST_SymDifference(geometry A, geometry B) 从A去除和B相交的部分后返回 ST_Difference(geometry A, geometry B) 返回两个几何对象的合并结果 ST_Union(geometry, geometry) 返回一系列几何对象的合并结果 ST_Union(geometry set) 用较少的内存和较长的时间完成合并操作结果和ST_Union相同 ST_MemUnion(geometry set)
④几何对象存取函数
获取几何对象的WKT描述 ST_AsText(geometry) 获取几何对象的WKB描述 ST_AsBinary(geometry) 获取几何对象的空间参考ID ST_SRID(geometry) 获取几何对象的维数 ST_Dimension(geometry) 获取几何对象的边界范围 ST_Envelope(geometry) 判断几何对象是否为空 ST_IsEmpty(geometry) 判断几何对象是否不包含特殊点比如自相交 ST_IsSimple(geometry) 判断几何对象是否闭合 ST_IsClosed(geometry) 判断曲线是否闭合并且不包含特殊点 ST_IsRing(geometry) 获取多几何对象中的对象个数 ST_NumGeometries(geometry) 获取多几何对象中第N个对象 ST_GeometryN(geometry,int) 获取几何对象中的点个数 ST_NumPoints(geometry) 获取几何对象的第N个点 ST_PointN(geometry,integer) 获取多边形的外边缘 ST_ExteriorRing(geometry) 获取多边形内边界个数 ST_NumInteriorRings(geometry) 同上 ST_NumInteriorRing(geometry) 获取多边形的第N个内边界 ST_InteriorRingN(geometry,integer) 获取线的终点 ST_EndPoint(geometry) 获取线的起始点 ST_StartPoint(geometry) 获取几何对象的类型 GeometryType(geometry) 类似上但是不检查M值即POINTM对象会被判断为point ST_GeometryType(geometry) 获取点的X坐标 ST_X(geometry) 获取点的Y坐标 ST_Y(geometry) 获取点的Z坐标 ST_Z(geometry) 获取点的M值 ST_M(geometry)
⑤几何对象构造函数
参考语义 TextWKT WKBWKB Geom:Geometry M:Multi Bd:BuildArea Coll:Collection ST_GeomFromText(text,[])
ST_PointFromText(text,[]) ST_LineFromText(text,[]) ST_LinestringFromText(text,[]) ST_PolyFromText(text,[]) ST_PolygonFromText(text,[]) ST_MPointFromText(text,[]) ST_MLineFromText(text,[]) ST_MPolyFromText(text,[]) ST_GeomCollFromText(text,[]) ST_GeomFromWKB(bytea,[]) ST_GeometryFromWKB(bytea,[]) ST_PointFromWKB(bytea,[]) ST_LineFromWKB(bytea,[]) ST_LinestringFromWKB(bytea,[]) ST_PolyFromWKB(bytea,[]) ST_PolygonFromWKB(bytea,[]) ST_MPointFromWKB(bytea,[]) ST_MLineFromWKB(bytea,[]) ST_MPolyFromWKB(bytea,[]) ST_GeomCollFromWKB(bytea,[]) ST_BdPolyFromText(text WKT, integer SRID)
ST_BdMPolyFromText(text WKT, integer SRID)
2.PostGIS扩展函数
①管理函数
删除一个空间表包括geometry_columns中的记录 DropGeometryTable([], ) 更新空间表的空间参考 UpdateGeometrySRID([], , , ) 更新空间表的统计信息 update_geometry_stats([, ])
参考语义 GeosGEOS库 JtsJTS库 ProjPROJ4库 postgis_version()
postgis_lib_version() postgis_lib_build_date() postgis_script_build_date() postgis_scripts_installed() postgis_scripts_released() postgis_geos_version() postgis_jts_version() postgis_proj_version() postgis_uses_stats() postgis_full_version()
②几何操作符
A范围B范围 A B A范围覆盖B范围或A范围在B范围左侧 A B A范围在B范围左侧 A B A范围覆盖B范围或A范围在B范围下方 A | B A范围覆盖B范围或A范围在B范围上方 A | B A范围在B范围下方 A | B A范围在B范围上方 A | B AB A ~ B A范围被B范围包含 A B A范围包含B范围 A ~ B A范围覆盖B范围 A B
③几何量测函数
量测面积 ST_Area(geometry) 根据经纬度点计算在地球曲面上的距离单位米地球半径取值6370986米 ST_distance_sphere(point, point) 类似上使用指定的地球椭球参数 ST_distance_spheroid(point, point, spheroid) 量测2D对象长度 ST_length2d(geometry) 量测3D对象长度 ST_length3d(geometry) 根据经纬度对象计算在地球曲面上的长度 ST_length_spheroid(geometry,spheroid) ST_length3d_spheroid(geometry,spheroid) 量测两个对象间距离 ST_distance(geometry, geometry) 量测两条线之间的最大距离 ST_max_distance(linestring,linestring) 量测2D对象的周长 ST_perimeter(geometry) ST_perimeter2d(geometry) 量测3D对象的周长 ST_perimeter3d(geometry) 量测两点构成的方位角单位弧度 ST_azimuth(geometry, geometry)
④几何对象输出
参考语义 NDRLittle Endian XDRbig-endian HEXEWKBCanonical SVGSVG 格式 GMLGML 格式 KMLKML 格式 GeoJsonGeoJson 格式
ST_AsBinary(geometry,{‘NDR’|‘XDR’}) ST_AsEWKT(geometry) ST_AsEWKB(geometry, {‘NDR’|‘XDR’}) ST_AsHEXEWKB(geometry, {‘NDR’|‘XDR’}) ST_AsSVG(geometry, [rel], [precision]) ST_AsGML([version], geometry, [precision]) ST_AsKML([version], geometry, [precision]) ST_AsGeoJson([version], geometry, [precision], [options])
⑤几何对象创建
参考语义 Dump转储 ST_GeomFromEWKT(text)
ST_GeomFromEWKB(bytea) ST_MakePoint(, , [], []) ST_MakePointM(, , ) ST_MakeBox2D(, ) ST_MakeBox3D(, ) ST_MakeLine(geometry set) ST_MakeLine(geometry, geometry) ST_LineFromMultiPoint(multipoint) ST_MakePolygon(linestring, [linestring[]]) ST_BuildArea(geometry) ST_Polygonize(geometry set) ST_Collect(geometry set) ST_Collect(geometry, geometry) ST_Dump(geometry) ST_DumpRings(geometry)
⑥几何对象编辑
给几何对象添加一个边界会使查询速度加快 ST_AddBBOX(geometry) 删除几何对象的边界 ST_DropBBOX(geometry) 添加、删除、设置点 ST_AddPoint(linestring, point, []) ST_RemovePoint(linestring, offset) ST_SetPoint(linestring, N, point) 几何对象类型转换 ST_Force_collection(geometry) ST_Force_2d(geometry) ST_Force_3dz(geometry), ST_Force_3d(geometry), ST_Force_3dm(geometry) ST_Force_4d(geometry) ST_Multi(geometry) 将几何对象转化到指定空间参考 ST_Transform(geometry,integer) 对3D几何对象作仿射变化 ST_Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8) 对2D几何对象作仿射变化 ST_Affine(geometry, float8, float8, float8, float8, float8, float8) 对几何对象作偏移 ST_Translate(geometry, float8, float8, float8) 对几何对象作缩放 ST_Scale(geometry, float8, float8, float8) 对3D几何对象作旋转 ST_RotateZ(geometry, float8) ST_RotateX(geometry, float8) ST_RotateY(geometry, float8) 对2D对象作偏移和缩放 ST_TransScale(geometry, float8, float8, float8, float8) 反转 ST_Reverse(geometry) 转化到右手定则 ST_ForceRHR(geometry) 参考IsSimple函数 使用Douglas-Peuker算法 ST_Simplify(geometry, tolerance) ST_SimplifyPreserveTopology(geometry, tolerance) 讲几何对象顶点捕捉到网格 ST_SnapToGrid(geometry, originX, originY, sizeX, sizeY) ST_SnapToGrid(geometry, sizeX, sizeY), ST_SnapToGrid(geometry, size) 第二个参数为点指定原点坐标 ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM) 分段 ST_Segmentize(geometry, maxlength) 合并为线 ST_LineMerge(geometry)
⑦线性参考
根据location0-1获得该位置的点 ST_line_interpolate_point(linestring, location) 获取一段线 ST_line_substring(linestring, start, end) 根据点获取location0-1 ST_line_locate_point(LineString, Point) 根据量测值获得几何对象 ST_locate_along_measure(geometry, float8) 根据量测值区间获得几何对象集合 ST_locate_between_measures(geometry, float8, float8)
⑧杂项功能函数
几何对象的摘要 ST_Summary(geometry) 几何对象的边界 ST_box2d(geometry) ST_box3d(geometry) 多个几何对象的边界 ST_extent(geometry set) 02d, 13dm, 23dz, 34d ST_zmflag(geometry) 是否包含Bounding Box ST_HasBBOX(geometry) 几何对象的维数2、3、4 ST_ndims(geometry) 子对象的个数 ST_nrings(geometry) ST_npoints(geometry) 对象是否验证成功 ST_isvalid(geometry) 扩大几何对象 ST_expand(geometry, float) 计算一个空间表的边界范围 ST_estimated_extent([schema], table, geocolumn) 获得空间参考 ST_find_srid(, , ) 几何对象使用的内存大小单位byte ST_mem_size(geometry) 点是否在圆上 ST_point_inside_circle(,) 获取边界的X、Y、Z ST_XMin(box3d) ST_YMin(box3d) ST_ZMin(box3d) ST_XMax(box3d) ST_YMax(box3d) ST_ZMax(box3d) 构造一个几何对象的数组 ST_Accum(geometry set)
长事务支持 启用/关闭长事务支持重复调用无副作用 EnableLongTransactions() DisableLongTransactions() 检查对行的update和delete操作是否已授权 CheckAuth([], , ) 锁定行 LockRow([], , , , []) 解锁行 UnlockRows() 在当前事务中添加授权ID AddAuth()
其他的函数还有可以到官网进行查看 postgis2.0官方文档 地址如下http://postgis.net/docs/manual-2.0/reference.html 总结
关注微信公众号CV算法小屋 获取更多用法
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88868.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!