Я пытаюсь создать тепловую карту заказов клиентов по штатам
Я следую этому уроку:
https://www.mssqltips.com/sqlservertip/3550/sql-server-reporting-services-analytical-marker-maps-including-bing-maps/
Однако по какой-то причине очки не попадают в правильное место.
У меня есть стол, полный клиентов, их города и штата. Чтобы узнать долготу и широту каждого города, я скачал базу данных отсюда
https://simplemaps.com/data/us-cities
Затем я присоединил эту базу данных к своей информации о клиенте, чтобы получить долготу и широту для каждого клиента. Затем я сопоставил это с пространственным расположением.
Вот моя керея:
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
Откуда я знаю, где это идет не так? Неправильно ли пространственное расположение или ssrs отображает их неправильно? Я проверил несколько координат долготы и широты клиента, и они показались правильными, я не уверен, как проверить пространственное расположение.