昨天在项目中,用到 EntityFramework 通过SQL语句查询。

具体的SQL语句如下:

SELECT
t.*
FROM
(
SELECT
c.id AS CommunityId,
c.`name` AS CommunityName,
ASTEXT(c.spatial_data) AS CommunitySpatialData,
s.id AS StreetId,
s.`name` AS StreetName,
ASTEXT(s.spatial_data) AS StreetSpatialData,
MBRContains (s.spatial_data ,ST_GeometryFromText('Point(@Longitude @Latitude)')) AS streetIn,
MBRContains (c.spatial_data ,ST_GeometryFromText('Point(@Longitude @Latitude)')) AS communityIn
FROM
community c
LEFT JOIN street s ON c.street_id = s.id
) AS t
WHERE
t.streetIn = 1
AND t.communityIn = 1;

应该说这样没有问题的,但是查询一直报错:“Invalid GIS data provided to function st_geometryfromtext.”

换了多种传参方式,但是都还有问题。

经过各种调试、修改参数,大致可以确定是:两个参数是连续的,中间有空格,但是在参数替换后空格替换没了,导致数据格式出错。

再次调整下传的参数就可以,修改后SQL语句:

SELECT
t.*
FROM
(
SELECT
c.id AS CommunityId,
c.`name` AS CommunityName,
ASTEXT(c.spatial_data) AS CommunitySpatialData,
s.id AS StreetId,
s.`name` AS StreetName,
ASTEXT(s.spatial_data) AS StreetSpatialData,
MBRContains (s.spatial_data ,ST_GeometryFromText(@point)) AS streetIn,
MBRContains (c.spatial_data ,ST_GeometryFromText(@point)) AS communityIn
FROM
community c
LEFT JOIN street s ON c.street_id = s.id
) AS t
WHERE
t.streetIn = 1
AND t.communityIn = 1;

对应的 point 是:

string point = "Point(" + Longitude + " " + Latitude + ")";

虽然知道了问题,也解决了,但是没有彻底解决这个问题。

有知道的可以告知下。

注意:

1、对于面数据:最后一个点应该是第一个点,这样在入库的时候才正确,否则报错“Invalid GIS data provided to function st_geometryfromtext.”

最新文章

  1. laravel安装笔记
  2. 【Android端 APP GPU过度绘制】GPU过度绘制及优化
  3. 格式化HRESULT获取对应文本
  4. 修改input的type属性
  5. 基于选择重传ARQ传输协议的数据重传机制方案设计
  6. uva 757
  7. git使用的常见命令(一)
  8. Learning WCF Chapter1 Generating a Service and Client Proxy
  9. jquery中的on事件
  10. asp.net 获得客户端 mac 地址
  11. C# STA和MTA线程设置
  12. 0_Simple__simpleAssert + 0_Simple__simpleAssert_nvrtc
  13. linux shell 发送qq邮件失败
  14. 第一册:lesson eighty five。
  15. python之旅七【第七篇】面向对象之类成员
  16. linux命令基础三
  17. Resilience4j usage
  18. 【转】centos(原生yum系通用)安装xfce便捷方法
  19. mysql 通过echo的方式写入数据库 中文乱码解决方案
  20. hihocoder #1388 : Periodic Signal fft

热门文章

  1. Flutter 路由传入中文参数报错无法push问题
  2. github账户初始化设置
  3. Linux下安装redis以及常用命令
  4. linux 下mongo 基础配置
  5. lombok的@Accessors注解
  6. 【转帖】docker 如何删除none镜像
  7. (一)PlantUML 语法之时序图
  8. 剑指offer50:数组中重复的数字
  9. idea的项目结构
  10. Liar CodeForces - 822E (dp,后缀数组)