Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图用SQL创建热图,但我的空间数据有问题_Sql_Sql Server_Geospatial_Spatial Query - Fatal编程技术网

试图用SQL创建热图,但我的空间数据有问题

试图用SQL创建热图,但我的空间数据有问题,sql,sql-server,geospatial,spatial-query,Sql,Sql Server,Geospatial,Spatial Query,我正在尝试创建一个各州客户订单的热图。我将学习本教程: 但是,由于某些原因,这些点没有到达正确的位置 我的桌子上坐满了顾客以及他们所在的城市和州。为了得到每个城市的经纬度,我从这里下载了一个数据库 然后,我将该数据库与我的客户信息连接起来,以获得每个客户的经度和纬度。然后我将其映射到空间分配 我的问题是: SELECT TOP 100 --* --,CAST('POINT( ' + right(left(LAT, len(LAT) -1),len(LAT) -2) + '

我正在尝试创建一个各州客户订单的热图。我将学习本教程:

但是,由于某些原因,这些点没有到达正确的位置

我的桌子上坐满了顾客以及他们所在的城市和州。为了得到每个城市的经纬度,我从这里下载了一个数据库

然后,我将该数据库与我的客户信息连接起来,以获得每个客户的经度和纬度。然后我将其映射到空间分配

我的问题是:

SELECT TOP 100
    --*
    --,CAST('POINT( ' + right(left(LAT, len(LAT) -1),len(LAT) -2) + ' ' + right(left(LNG, len(LNG) -1),len(LNG) -2) + ' )' as geometry) AS SpatialLocation 
    CSS.City
    ,CSS.State
    ,CSS.TotalCustomerValue
    ,CSS.TotalOrders
    ,CSS.OrderDensityPercent
    ,geography::STPointFromText('POINT(' + CAST(right(left(LAT, len(LAT) -1),len(LAT) -2) AS VARCHAR(20)) + ' ' + CAST(right(left(LAT, len(LAT) -1),len(LAT) -2) AS VARCHAR(20)) + ')', 4326) SpatialLocation2
    ,CSS.BrandNewCustomers
    ,CSS.RecurringCustomers
    ,CSS.ReactivatedCustomers
FROM
    (SELECT DISTINCT
        --*
        LTRIM(RTRIM(cs.City)) City
        ,LTRIM(RTRIM(cs.State)) State
        ,RIGHT(LEFT(lat, len(lat) -1),len(lat) -2) lat -- the lat and long are wrapped in quotes
        ,RIGHT(LEFT(lng, len(lng) -1),len(lng) -2) lng -- so i have to do the left right to get rid of them. 
        ,SUM(cs.TotalCustomerValueOverBase) over (partition by  cs.City, cs.State) TotalCustomerValue
        ,SUM(cs.TotalOrdersBase) over (partition by  cs.City, cs.State) TotalOrders
        --,SUM(cs.TotalQuantityOverBase) over (partition by  cs.City, cs.State) TotalQuantity
        ,right(left(population_proper, len(population_proper) -1),len(population_proper) -2) population_proper
        ,CAST(
            SUM(cs.TotalOrdersBase) over (partition by  cs.City, cs.State) 
            /
            NULLIF(convert(float, right(left(population_proper, len(population_proper) -1),len(population_proper) -2)),0)*100 
        as decimal(10,2)) AS OrderDensityPercent
        ,SUM(cs.BrandNewCustomer) over (partition by     cs.City, cs.State) BrandNewCustomers
        ,SUM(cs.RecurringCustomer) over (partition by    cs.City, cs.State) RecurringCustomers
        ,SUM(cs.ReactivatedCustomer) over (partition by  cs.City, cs.State) ReactivatedCustomers
    FROM 
        Customers -- This table gives full customer information per customer.
    LEFT JOIN 
        [A1Warehouse].[dbo].[uscities] Ci ON cs.City = right(left(ci.city_ascii, len(ci.city_ascii) -1),len(ci.city_ascii) -2) and cs.State = right(left(ci.state_id, len(ci.state_id) -1),len(ci.state_id) -2)
    WHERE 
        LAT IS NOT NULL AND LNG IS NOT NULL) CSS
ORDER BY 
    TotalCustomerValue DESC
以下是一个示例结果:

City    State    Amount    Orders    PopDensity    SpatialLocation
Brooklyn    NY  $663    8535    0.32    0xE6100000010CCDCCCCCCCCCCE43FCDCCCCCCCCCCE43F
MIAMI   FL  $529    7042    1.52    0xE6100000010C894160E5D0221740894160E5D0221740
Bronx   NY  $443    5901    0.41    0xE6100000010C333333333333EB3F333333333333EB3F

我怎么知道哪里出了问题?空间位置是否错误,或者SSR是否显示错误?我检查了一些客户的经纬度坐标,它们似乎是正确的,我不知道如何检查它们

开放地理空间联盟(OGC)的著名文本(WKT)表示,格式为(x,y)。地理坐标通常由Lat/Long指定,但在这两者之间,X是经度,Y是纬度。

因此,在指定纬度和正确的地理位置::STPointFromText参数顺序之前,应首先指定经度

...
    ,geography::STPointFromText('POINT(' + CAST(right(left(Lng, len(Lng) -1),len(Lng) -2) AS VARCHAR(20)) + ' ' + CAST(right(left(LAT, len(LAT) -1),len(LAT) -2) AS VARCHAR(20)) + ')', 4326) SpatialLocation2
...

问题是我在纬度和经度上做了左,右的事情,结果把事情搞得一团糟。这样做一次是正确的,因为我需要删除它周围的引号,但我在创建地理字段时做了第二次,这是删除格式正确的位置点的第一个和最后一个字符

我试过了,但还是不行。这是我尝试的第一件事,切换lat和ln。它只是以相反的方式使地图不正确。