Microsoft Server 2008 空间存储 应用方法详解

article/2025/7/23 4:15:44

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

刚接触2008的空间存储,资料比较少,在数据库操作中有很多不懂的地方,包括用法,语法等,经过同事的指点明白了一些,感谢大腿同事·~这里只记录数据库操作部分。

方法描述

  • STAsText()

返回类型:nvarchar SqlChars

返回 geometry 实例的开放地理空间联盟 (OGC) 熟知文本 (WKT) 表示形式。此文本将不包含该实例传递的任何 Z(标高)或 M(度量)值。  

  • STDistance()

返回类型:float  SqlDouble

STDistance(other_geometry)   返回一个 geometry 实例中的点与另一个 geometry 实例中的点之间的最短距离。 参数:将与在其上调用 STDistance() 的实例进行比较的另一个 geometry 实例。

  • STIntersects()

返回类型:bit  SqlBoolean

STIntersects(other_geometry)  如果 geometry 实例与另一个 geometry 实例相交,则返回 1。否则,返回 0。 参数:另一个 geometry 实例,将与调用 STIntersects() 所在的实例进行比较。  

实际应用-ArcGis

数据库表及实体类变量声名(wj_point 点数据):

111526_TAV3_1262063.png111714_uLtB_1262063.png

115809_zh1M_1262063.png

115035_L0bB_1262063.png

115052_lhRp_1262063.png

数据库表及实体类变量声名(wj_polygon 面数据, 字段属性与上表一致,区别在于shp数据一个存储的是点,一个是面):

142653_eZeX_1262063.png

142727_xX4s_1262063.png

142807_BFky_1262063.png

需求描述1:输入一个坐标点查询数据库中距离该点最近小于30米的点位,且只返回第一个结果

解释:ArcGis移动端应用,通过触屏方式,可获取到一个坐标值,通过数据库查询返回结果

关联:geography::STGeomFromText(),STDistance() => 距离,4326 => WGS84坐标系

SQL:

SELECT TOP 1 a.id AS "id",a.name AS "name",a.cj_pic AS "cjPic",a.cj_note AS "cjNote",a.cj_flag AS "cjFlag",a.fk_pic AS "fkPic",a.fk_note AS "fkNote",a.shp.STAsText() AS "shp"
FROM wj_point a WHERE geography::STGeomFromText('POINT (110.469908 19.927712)', 4326).STDistance(geography::STGeomFromText(a.shp.STAsText(), 4326))<=30

需求描述2:输入一个坐标点查询数据库中包含了该点位的面,且只返回第一个结果

解释:ArcGis移动端应用,通过触屏方式,可获取到一个坐标值,通过数据库查询返回结果

关联:geometry::STGeomFromText(),STIntersects() => 包含

SQL:

SELECT TOP 1 a.id AS "id",a.name AS "name",a.cj_pic AS "cjPic",a.cj_note AS "cjNote",a.cj_flag AS "cjFlag",a.fk_pic AS "fkPic",a.fk_note AS "fkNote",a.shp.STAsText() AS "shp"
FROM wj_polygon a WHERE geometry::STGeomFromText('POINT (110.469908 19.927712)', 0).STIntersects(geometry::STGeomFromText(a.shp.STAsText(), 0))=1

需求描述3:输入一个范围内最小xy和最大xy坐标值,4个值构成一个面,查询数据库中坐落在该面上的所有坐标点

解释:ArcGis移动端应用,通过手机屏幕的范围坐标值,通过数据库查询返回结果

关联:geometry::STGeomFromText(),STIntersects() => 包含

SQL:xmin,xmax,ymin,ymax分别代表x坐标值和y坐标值的最大最小值

SELECT a.id AS "id",a.name AS "name",a.cj_pic AS "cjPic",a.cj_note AS "cjNote",a.cj_flag AS "cjFlag",a.fk_pic AS "fkPic",a.fk_note AS "fkNote",a.shp.STAsText() AS "shp"
FROM wj_point a WHERE geometry::STGeomFromText('POLYGON ((xmin ymin,xmax ymin,xmax ymax,xmin ymax))', 0).STIntersects(geometry::STGeomFromText(a.shp.STAsText(), 0))=1

需求描述4:输入一个范围内最小xy和最大xy坐标值,4个值构成一个面,查询数据库中所有与该面相交的面

解释:ArcGis移动端应用,通过手机屏幕的范围坐标值,通过数据库查询返回结果

关联:geometry::STGeomFromText(),STIntersects() => 相交

SQL:

SELECT TOP 1 a.id AS "id",a.name AS "name",a.cj_pic AS "cjPic",a.cj_note AS "cjNote",a.cj_flag AS "cjFlag",a.fk_pic AS "fkPic",a.fk_note AS "fkNote",a.shp.STAsText() AS "shp"
FROM wj_polygon a WHERE geometry::STGeomFromText('POLYGON ((xmin ymin,xmax ymin,xmax ymax,xmin ymax))', 0).STIntersects(geometry::STGeomFromText(a.shp.STAsText(), 0))=1

需求描述5:插入数据(点)或(面)

解释:通过Web后端导入shp文件数据,执行数据库插入数据操作

关联:geometry::STGeomFromText()

SQL1:点位shp数据格式,POINT (x y)

SQL2:面shp数据格式,POLYGON ((x1 y1,x2 y2,x3 y3))

INSERT INTO wj_point(name,cj_pic,cj_note,cj_flag,fk_pic,fk_note,shp) VALUES ('0','0','0','0','0','0',(geometry::STGeomFromText('POINT (x y)', 0)))

需求描述6:查询数据库(点)和(面)表中,最小的xy和最大的xy值信息。

解释:ArcGis移动端应用,点击全图缩放到海南岛,查询出数据库中xy最大最小值,利用该值继续查询出所有数据,与需求3和4联合使用

关联:geometry::STGeomFromText(),STStartPoint(),STX,STY

SQL:

SELECT MIN(minx) minx, MIN(miny) miny, MAX(maxx) maxx, MAX(maxy) maxy FROM( SELECTMIN(geometry::STGeomFromText(geometry::STGeomFromText(a.shp.STAsText(), 0).STStartPoint().ToString(), 0).STX) minx, MIN(geometry::STGeomFromText(geometry::STGeomFromText(a.shp.STAsText(), 0).STStartPoint().ToString(), 0).STY) miny, MAX(geometry::STGeomFromText(geometry::STGeomFromText(a.shp.STAsText(), 0).STStartPoint().ToString(), 0).STX) maxx, MAX(geometry::STGeomFromText(geometry::STGeomFromText(a.shp.STAsText(), 0).STStartPoint().ToString(), 0).STY) maxy FROM wj_point aUNIONSELECTMIN(geometry::STGeomFromText(geometry::STGeomFromText(b.shp.STAsText(), 0).STStartPoint().ToString(), 0).STX) minx, MIN(geometry::STGeomFromText(geometry::STGeomFromText(b.shp.STAsText(), 0).STStartPoint().ToString(), 0).STY) miny, MAX(geometry::STGeomFromText(geometry::STGeomFromText(b.shp.STAsText(), 0).STStartPoint().ToString(), 0).STX) maxx, MAX(geometry::STGeomFromText(geometry::STGeomFromText(b.shp.STAsText(), 0).STStartPoint().ToString(), 0).STY) maxy FROM wj_polygon b) AS c

 

转载于:https://my.oschina.net/discussjava/blog/1377644


http://chatgpt.dhexx.cn/article/7HX2Jht1.shtml

相关文章

ODBC 数据类型和API(VC)

目录 ODBC 数据类型API 函数 ODBC 数据类型 ODBC SQL 数据类型 展开显示 ODBC SQL 数据类型SQL类型标识SQL 92类型标识类型描述SQL_CHARCHAR(n)定长字符串,其长度为nSQL_VARCHARVARCHAR(n)变长字符串,最大长度为nSQL_LONGVARCHARLONG VARCHAR变长字符串,最大长度取决于数据源S…

Sql的decimal、float、double类型的区别

三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位) d…

【网络编程实践】2.3.4.2 建议关闭 Nagle 算法

Nagle算法主要是避免发送小的数据包,要求TCP连接上最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组。 Nagle算法的目的:避免发送大量的小包,网络上每次只能一个小包存在,在小包被确认之前…

Nagle算法与TCP_CORK,TCP_NODELAY,TCP_QUICKACK

1. Nagel算法 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一…

如何关闭和启用Nagle算法

如果各位读者在搜索如何关闭的话,那么我有理由相信各位对想要解决的问题已经算是比较清楚了,废话不多数。 什么是nagle算法,它是干嘛用的,请自行google or 百度 Step1 Open regredit 快捷键:winr 打开&#xff1a…

19- TCP 协议(Nagle)

前面我们所用的 unp/protocol/tools/winclient/echo_cli.cpp 程序的特别之处是它总会发送一个小分组(TCP 段,只有 41 字节)到服务器。这样的小分组在英文中称为 tinygram,在网络状态好的情况下,比如局域网中&#xff0…

TCP Nagle算法详解

转: http://bbs.chinaunix.net/thread-3767363-1-1.html 在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个…

TCP之延时Nagle算法实验详解

TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MS…

Nagle Algorithm

转: http://bbs.chinaunix.NET/thread-3767363-1-1.html 在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这…

TCP中的Nagle算法

TCP中的Nagle算法 一. Nagel算法 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据.(在一个连接中会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数…

确认应答、Nagle算法和延时确认应答

目录 确认应答 延时确认应答 Nagle算法 确认应答 TCP在传输数据的时候,每次接受方收到来自发送方的数据包后,接受方对都会发送一个确认应答(ACK)报文作为回应,发送方收到来自接受方的确认应答(ACK)报文,就表明发送的数据已经被…

TCP/IP卷一:80---TCP数据流与窗口管理之(延时确认(延迟ACK)、Nagle算法)

一、延迟确认(延迟ACK) 在许多情况下,TCP并不对每个到来的数据包都返回ACK,利用TCP的累积ACK字段(参见TCP报文格式https://blog.csdn.net/qq_41453285/article/details/104016416)就能实现该功能累积确认可…

禁用 Nagle 算法

有没有发现一个很奇怪的组合,即 Nagle 算法和延时 ACK 的组合。这个组合为什么奇怪呢? 我举一个例子你来体会一下。比如,客户端分两次将一个请求发送出去,由于请求的第一部分的报文未被确认,Nagle 算法开始起作用&…

TCP Nagle算法及示例

TCP nagle算法是说,一个TCP连接只允许有一个未被确认的小数据包,如果有小数据包未被确认,其他要发送的小数据包先被缓存起来,等收到确认后, 把这些数据包再一块发送出去。注意算法中说的是小数据包,也就是n…

TCP-IP详解:Nagle算法

参考书籍:TCP/IP详解,卷1:协议 Small Packet Problem 在使用一些协议通讯的时候,比如Telnet,会有一个字节字节的发送的情景,每次发送一个字节的有用数据,就会产生41个字节长的分组&#xff0c…

TCP-Nagle:代码版本重新解释Nagle算法

开年来的第一份工作,就是在最新的内核上打补丁。 可没想到Nagle算法也被我冲进了去年的垃圾桶里。 在网上找了一些资料,理论很快被消化,但看了看内核的实现,久久没能动弹。坐了一天,才摸索出来点什么,觉得…

Nagle算法原理与实现详解

文章目录 背景Nagle算法详解算法实现实现开启与关闭Nagle算法 Nagle算法与延迟ACK参考 背景 TCP的数据流大致可以被分成两类: 交互式数据流 TCP交互数据流指的是:TCP连接中传输的所有数据的总和,包括控制命令(用于管理网络中连接…

TCP详解 (三)Nagle算法和延迟确认

文章目录 延迟确认Nagle算法Nagle算法遇上延迟确认关闭Nagle算法 一些有关TCP通信量的研究如[Caceresetal.1991]发现,如果按照分组数量计算,约有一半的TCP报文段包含成块数据(如 FTP、电子邮件和 Usenet新闻),另一半则…

复指数信号正交性的简单证明

复指数信号为: . 写成矢量形式: 复指数信号两两正交,也就是两个复指数信号的内积有如下表示: 将上式内积形式展开: 当kl时,所有cos项1,sin项0,求和为N。 当时,将求和符…

三角函数正交性的推导

定理: 一个三角函数系:1 cosx sinx cos 一个三角函数系:1,cosx , sinx , cos2x , sin2x , … , cosnx , sinnx , … 如果这一堆函数(包括常数1)中任何两个不同函数的乘积在区间[-π, π]上的积分等于…