Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách hiểu về kiểu dữ liệu địa lý của máy chủ SQL

Kiểu dữ liệu Địa lý SQL Server không giống như các kiểu khác đơn giản là vì bạn không sử dụng nó thường xuyên. Nó không giống như varchar , int , float hoặc DateTime hiện diện trong mọi bảng, ít nhất trong một loại.

Chúng ta có cần kiểu dữ liệu Địa lý SQL Server không? Để hiểu điều gì đó mới, chúng ta cần trả lời ba câu hỏi cơ bản:

Nó giải quyết những vấn đề gì ? Câu trả lời nằm trong các trường hợp sử dụng.
Những điều liên quan đến việc nghiên cứu nó là gì? Bạn sẽ học một vài định nghĩa và từ viết tắt cơ bản. Tôi chỉ thu thập những thứ quan trọng, vì vậy nó sẽ không làm phiền bạn.
Có ví dụ nào để giải thích thêm về cách thức hoạt động và nó có dễ thực hiện không? Đồng loại của chúng ta sống với mật mã. Chúng tôi ăn ngủ với nó. Vì vậy, chúng tôi sẽ có các mã mẫu trong bài đăng này.

Nó không phải là một bài đăng để nhồi nhét cho bạn những thuật ngữ và cú pháp công nghệ. Bạn có thể bắt đầu khi đã nắm được các kiến ​​thức cơ bản về kiểu dữ liệu địa lý của SQL Server. Nghe hay không?

Hãy đi sâu vào.

Các trường hợp sử dụng dữ liệu không gian

Hãy bắt đầu với điều rõ ràng nhất và hàng đầu - thuật ngữ chung “dữ liệu không gian”.

Dữ liệu không gian hoặc không gian địa lý là dữ liệu về các đối tượng, sự kiện hoặc hiện tượng nằm trên bề mặt Trái đất. Nói cách khác, nó là thông tin được nhồi trên bản đồ. Ví dụ, hãy nghĩ đến Google Maps hoặc Waze.

Nhưng còn nhiều hơn thế nữa:

  • Xác định vị trí xe tải giao hàng của công ty thông qua trang web hoặc ứng dụng dành cho thiết bị di động.
  • Tìm các điểm ưa thích như nhà hàng, ngân hàng hoặc bệnh viện lân cận.
  • Phân tích dữ liệu về động đất, sự lan truyền của COVID-19, lũ lụt hoặc giao thông đường bộ - phân tích không gian địa lý.

Và như vậy.

Một số nền tảng cơ sở dữ liệu đang xử lý dữ liệu không gian, nhưng chúng tôi sẽ chỉ tập trung vào một nền tảng.

Kiểu dữ liệu địa lý của SQL Server là gì?

Microsoft đã thêm các kiểu dữ liệu địa lý và hình học trong SQL Server 2008. Địa lý biểu thị dữ liệu trong một hệ tọa độ trái đất tròn. Nó cũng được triển khai dưới dạng kiểu dữ liệu .Net CLR, có các thuộc tính như vĩ độ hoặc kinh độ.

Bài đăng này tập trung vào loại dữ liệu địa lý và các ứng dụng của nó, đặc biệt là trong:

  • Các điểm ưa thích, như xác định vị trí các nhà hàng lân cận và một truy vấn mẫu.
  • Phân tích không gian địa lý.

Vì đây là một kiểu dữ liệu, chúng tôi tạo một bảng. Sau đó, chúng tôi xác định một cột hoặc các cột là địa lý. Và cuối cùng, chúng tôi tạo chỉ mục không gian trên các cột đó.

Khi bạn truy vấn một bảng có cột địa lý, đầu ra sẽ ở dạng nhị phân.

Hãy thử thực hiện một ví dụ cơ bản bên dưới:

SELECT 
 [CityID]
,[CityName]
,[GeoLocation]
FROM [Cities]

Hình 1 dưới đây cho thấy tập hợp kết quả:

Khi tập hợp kết quả bao gồm dữ liệu không gian, Kết quả không gian tab cũng sẽ xuất hiện. Hình 2 minh họa Kết quả không gian từ truy vấn trên:

Bây giờ, điều gì vừa xảy ra?

Có vẻ như việc xem tập hợp kết quả còn lâu mới dễ dàng và hữu ích, chứ chưa nói đến các dấu chấm dọc theo đường lưới. Tôi đã cho bạn thấy những gì mong đợi ở lần CHỌN đầu tiên tuyên bố về các kiểu dữ liệu địa lý. Phần tiếp theo sẽ mở ra một góc nhìn tốt hơn nhiều.

Tạo phiên bản địa lý máy chủ SQL

Bạn cần một phiên bản để hoạt động trên dữ liệu với kiểu dữ liệu địa lý của SQL Server. Có bốn cách để tạo một phiên bản địa lý:

  1. từ một trường hợp địa lý khác
  2. sử dụng một văn bản nổi tiếng (WKT)
  3. sử dụng một hệ nhị phân nổi tiếng (WKB)
  4. từ đầu vào văn bản Ngôn ngữ đánh dấu địa lý (GML)

Hãy tập trung vào việc sử dụng một văn bản nổi tiếng.

Sử dụng Văn bản Nổi tiếng (WKT)

Sự trình bày này dựa trên Tổ chức Không gian Địa lý Mở (OGC). Nó cho phép dữ liệu địa lý trao đổi dưới dạng văn bản.

Lấy ví dụ trước của chúng tôi, nhưng thay vì đầu ra nhị phân, chúng tôi sẽ chuyển đổi nó thành một chuỗi:

SELECT 
 [CityID]
,[CityName]
,[GeoLocation].ToString() AS GeoLocationString
FROM [Cities]

Lưu ý đến Chuỗi ký tự () phương pháp. Nó sẽ chuyển đầu ra thành giá trị chuỗi. Bạn có thể xem kết quả trong Hình 3 bên dưới:

Tốt hơn? Chà, nó vẫn chỉ là những con số. Nhưng nếu tôi nói với bạn rằng những con số này là vĩ độ và kinh độ của những thành phố đó thì sao? Nó có ý nghĩa hơn, phải không?

Đây là một văn bản nổi tiếng (WKT), và nó rất cần thiết khi bạn đưa dữ liệu vào cột. Thêm về điều đó sau. Bây giờ, chúng ta cần một điều nữa để kiểm tra.

Mã định danh tham chiếu không gian (SRID)

Ngoài một văn bản nổi tiếng, mỗi trường hợp địa lý đều có Mã định danh tham chiếu không gian (SRID). Nó cần thiết để đo các trường hợp địa lý (địa điểm hoặc điểm) trong bản đồ trái đất tròn.

Đơn vị đo lường phổ biến nhất là mét hoặc mét vuông, được ký hiệu là SRID 4326. Bạn có thể tìm thấy tất cả các SRID khác trong sys.spatial_reference_systems .

Các cột địa lý của bạn có thể có các SRID khác nhau. Lưu ý rằng khi bạn thực hiện các thao tác trên hai trường hợp địa lý, chẳng hạn như đo khoảng cách của chúng. Cả hai trường hợp phải có cùng SRID hoặc nó sẽ trả về cho bạn NULL .

STGeomFromText

Sau khi tìm hiểu về WKT và SRID, việc tạo một phiên bản địa lý yêu cầu một phương pháp có tên là STGeomFromText . Nó có cú pháp sau:

địa lý ::STGeomFromText ( , SRID )

Ví dụ:

INSERT INTO Cities
(CityName, GeoLocation)
VALUES
('CITY OF MANILA',geography::STGeomFromText('POINT(14.6077 120.98202)', 4326))

Hãy kiểm tra các giá trị tham số:

‘POINT (14,6077 120,98202)’ - văn bản nổi tiếng của một điểm trên bản đồ với vĩ độ 14,6077 và kinh độ 120,98202. Điều này tương ứng với Manila, thành phố thủ đô của Philippines.

4326 - mã định danh tham chiếu không gian

Hãy bắt đầu ngay với các ví dụ và sử dụng viên ngọc mới mà chúng tôi đã tìm thấy này.

Ví dụ thực tế về kiểu dữ liệu địa lý máy chủ SQL

Chúng tôi sẽ có hai ứng dụng phổ biến để giúp bạn thiết lập và chạy với dữ liệu địa lý.

Tính khoảng cách (Hàng xóm gần nhất)

Một ứng dụng phổ biến trong dữ liệu không gian địa lý được gọi là truy vấn láng giềng gần nhất. Trong truy vấn này, bạn muốn biết khoảng cách hoặc gần một thứ gì đó với một đối tượng hoặc địa điểm khác.

Trong bài đăng của tôi về biểu đồ SQL, tôi đã mô tả cách khách hàng có thể tìm thấy các nhà hàng lân cận từ vị trí hiện tại. Hãy tham khảo lại ví dụ đó:

-- Query the location of the customer
DECLARE @deliveryLocation GEOGRAPHY

SELECT @deliveryLocation = Locations.GeoLocation
FROM Customers, willReceiveIn, Locations
WHERE MATCH(Customers-(willReceiveIn)->Locations)
AND Customers.CustomerID = 3

-- Query the restaurants within 1000 meters from the location of the customer
SELECT
 Restaurants.Name
,Restaurants.Description
,Restaurants.Opening
,Restaurants.Closing
,Locations.Description
,ROUND(Locations.GeoLocation.STDistance(@deliveryLocation),2) AS Distance
FROM Restaurants, isLocated, Locations
WHERE MATCH(Restaurants-(isLocated)->Locations)
AND locations.GeoLocation.STDistance(@deliveryLocation) <= 1000
ORDER BY Distance

Bí mật cho truy vấn hàng xóm gần nhất này là STDistance (). Nó cần hai vị trí địa lý:một cho khách hàng và một cho các nhà hàng trong phạm vi 1000 mét từ vị trí của khách hàng.

Điều thú vị là, khái niệm tương tự cũng áp dụng cho các ý tưởng khác liên quan đến hai hoặc nhiều địa điểm.

Phân tích không gian địa lý bằng Power BI

Một ứng dụng khác của dữ liệu không gian đang sử dụng nó để phân tích Không gian địa lý. Trong phần này, chúng tôi có một ví dụ sử dụng các trường hợp COVID-19 cho mỗi vị trí và trình bày nó bằng Power BI.

(Xin lưu ý thêm, đây là thông tin thêm về Power BI là gì và cách cài đặt nó)

Cài đặt Power BI Desktop miễn phí. Một trong những trực quan hóa mặc định là trực quan hóa Bản đồ bằng Bing Maps. Chúng tôi không cần tọa độ cho các vị trí đã biết như các quốc gia và tiểu bang của Hoa Kỳ. Xem điều này trong ví dụ bên dưới:

Lưu ý hộp màu đỏ trong Hình 4. Vĩ độ và kinh độ được để trống, nhưng các bong bóng được vẽ trên bản đồ rất tốt.

Tuy nhiên, trong ví dụ tiếp theo, chúng tôi sẽ sử dụng các vùng và thành phố ở Philippines. Tọa độ là điều bắt buộc để vẽ các bong bóng một cách chính xác.

BẠN CẦN GÌ

Trước khi đi vào phần quan trọng của báo cáo, đây là những điều cơ bản chúng ta cần:

  • Máy tính để bàn Power BI
  • Hình ảnh hoá Bản đồ
  • Bảng và truy vấn
  • Dữ liệu mẫu

CHUẨN BỊ DỮ LIỆU

Chuẩn bị Bảng và Chế độ xem

Lúc đầu, chúng ta cần thiết lập vùng chứa cho dữ liệu của mình. Vì vậy, chúng tôi yêu cầu các bảng sau:

  1. Các thành phố - danh sách các thành phố ở Philippines được phân loại theo khu vực.
  2. Khu vực - danh sách các khu vực ở Philippines
  3. CityCases - danh sách chứa số lượng trường hợp cho mỗi thành phố.

Dưới đây là cấu trúc bảng:

CREATE TABLE [dbo].[Cities](
[CityID] [int] IDENTITY(1,1) NOT NULL,
[CityName] [varchar](50) NOT NULL,
[RegionID] [int] NOT NULL,
[GeoLocation] [geography] NULL,
 CONSTRAINT [PK_Cities] PRIMARY KEY CLUSTERED
(
[CityID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[Regions](
[RegionID] [int] IDENTITY(1,1) NOT NULL,
[Region] [varchar](50) NOT NULL,
[GeoLocation] [geography] NULL,
 CONSTRAINT [PK_Regions] PRIMARY KEY CLUSTERED
(
[RegionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[CityCases](
[CityCaseID] [int] IDENTITY(1,1) NOT NULL,
[CityID] [int] NOT NULL,
[DateReported] [date] NOT NULL,
[TotalCases] [int] NOT NULL,
[TotalDeaths] [int] NOT NULL,
 CONSTRAINT [PK_CityCases] PRIMARY KEY CLUSTERED
(
[CityCaseID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CityCases]  WITH CHECK ADD  CONSTRAINT [FK_CityCases_Cities] FOREIGN KEY([CityID])
REFERENCES [dbo].[Cities] ([CityID])
GO
ALTER TABLE [dbo].[CityCases] CHECK CONSTRAINT [FK_CityCases_Cities]
GO

Vì loại dữ liệu địa lý không xác định đối với trực quan hóa Bản đồ Power BI, nên bạn cần tạo chế độ xem. Mục đích là để hiển thị vĩ độ và kinh độ từ các cột đó. Chúng tôi làm điều này cho các thành phố và khu vực - xem bên dưới:

CREATE VIEW vwCityCoordinates
AS
SELECT
 CityID
,CityName
,GeoLocation.Lat AS Latitude
,Geolocation.Long AS Longitude
,RegionID
FROM Cities

CREATE VIEW vwRegionCoordinates
AS
SELECT
 RegionID
,Region
,GeoLocation.Lat AS Latitude
,GeoLocation.Long AS Longitude
FROM Regions

Đó là nó. Vĩ độ Dài là các thuộc tính cho vĩ độ và kinh độ. Hiện có thể sử dụng chúng trong báo cáo Power BI của chúng tôi.

Xây dựng dữ liệu

Tiếp theo, bạn cần xây dựng dữ liệu cho ba bảng của chúng tôi.

Rất cảm ơn Bộ Y tế Philippines đã cung cấp tập dữ liệu cho công chúng. Tệp có định dạng CSV. Quy ước đặt tên tệp là DOH COVID Data Drop_ yyyymmdd - 04 Case Information.CSV.

Dưới đây là cách lấy tệp để thực hành tốt hơn với ví dụ của chúng tôi:

  1. Nhấp vào liên kết tới tập dữ liệu.
  2. Chọn một thư mục tháng. Tháng 8 năm 2020 trong Dữ liệu DOH COVID (08).
  3. Chọn một ngày. Ví dụ:ngày 12 tháng 8 năm 2020 trong DOH COVID Data Drop_20200812.
  4. Tải xuống DOH COVID Data Drop_ 20200812 - 04 Thông tin trường hợp.CSV. Lặp lại các bước 2-4 để nhận báo cáo cho những ngày khác.

Hơn nữa, bạn cần nhập dữ liệu đó vào SQL Server. Đây là cách thực hiện:

  1. Mở tệp CSV trong Excel.
  2. Thêm cột DateReported và điền vào tất cả các bản ghi với ngày tương ứng. Trong trường hợp này là ngày 10 tháng 8 năm 2020.
  3. Lưu nó dưới dạng tệp Excel (.xlsx).
  4. Xuất tệp Excel sang SQL Server sang bảng có tên covid_ph .

Bây giờ dữ liệu đã sẵn sàng trong SQL Server, nhiệm vụ tiếp theo là chạy phần sau trong trình chỉnh sửa truy vấn SSMS:

INSERT INTO CityCases
(CityID, DateReported, TotalCases, TotalDeaths)
SELECT DISTINCT
 c.CityID
,cp.DateReported
,(SELECT COUNT(*) FROM covid_ph cp1 WHERE cp1.CityMunRes = cp.CityMunRes AND                 
                               cp1.DateReported = cp.DateReported) AS TotalCases
,(SELECT COUNT(*) FROM covid_ph cp1 WHERE cp1.CityMunRes = cp.CityMunRes AND 
                               cp1.DateReported = cp.DateReported AND 
                               cp1.RemovalType='DIED') AS TotalDeaths
FROM covid_ph cp
INNER JOIN Cities c ON cp.CityMunRes = c.CityName
ORDER BY cp.DateReported

Trong khi đó, không có tọa độ nào trong tập dữ liệu mà chúng tôi đã sử dụng. Vì vậy, tôi đã thêm vĩ độ và kinh độ của các vùng và thành phố từ latlongdata.com theo cách thủ công.

Đây là dữ liệu cho Khu vực :

INSERT INTO Regions
(Region, GeoLocation)
VALUES
('BARMM',geography::STGeomFromText('POINT(121.987 6.42964)', 4326)),
('CAR',geography::STGeomFromText('POINT(121.466 17.4737)', 4326)),
('CARAGA',geography::STGeomFromText('POINT(125.492 9.78604)', 4326)),
('NCR',geography::STGeomFromText('POINT(120.984 14.5995)', 4326)),
('Region I: Ilocos Region',geography::STGeomFromText('POINT(120.381 17.5553)', 4326)),
('Region II: Cagayan Valley',geography::STGeomFromText('POINT(121.811 16.9754)', 4326)),
('Region III: Central Luzon',geography::STGeomFromText('POINT(120.712 15.4828)', 4326)),
('Region IV-A: CALABARZON',geography::STGeomFromText('POINT(121.079 14.1008)', 4326)),
('Region IV-B: MIMAROPA',geography::STGeomFromText('POINT(118.736 9.84321)', 4326)),
('Region IX: Zamboanga Peninsula',geography::STGeomFromText('POINT(123.259 8.15408)', 4326)),
('Region V: Bicol Region',geography::STGeomFromText('POINT(123.414 13.421)', 4326)),
('Region VI: Western Visayas',geography::STGeomFromText('POINT(122.537 11.005)', 4326)),
('Region VII: Central Visayas',geography::STGeomFromText('POINT(124.064 9.81687)', 4326)),
('Region VIII: Eastern Visayas',geography::STGeomFromText('POINT(125.039 12.2446)', 4326)),
('Region X: Northern Mindanao',geography::STGeomFromText('POINT(124.686 8.02016)', 4326)),
('Region XI: Davao Region',geography::STGeomFromText('POINT(126.089 7.30416)', 4326)),
('Region XII: SOCCSKSARGEN',geography::STGeomFromText('POINT(124.686 6.27069)', 4326))

Đây là dữ liệu từ danh sách một phần các thành phố cho Các thành phố bảng:

INSERT INTO Cities
(CityName, RegionID, GeoLocation)
VALUES
('CALOOCAN CITY',4,geography::STGeomFromText('POINT(120.967 14.6488)', 4326)),
('CITY OF LAS PIÑAS',4,geography::STGeomFromText('POINT(120.999 14.4325)', 4326)),
('CITY OF MAKATI',4,geography::STGeomFromText('POINT(121.033 14.5502)', 4326)),
('CITY OF MALABON',4,geography::STGeomFromText('POINT(120.957 14.6633)', 4326)),
('CITY OF MANDALUYONG',4,geography::STGeomFromText('POINT(121.039 14.5771)', 4326)),
('CITY OF MANILA',4,geography::STGeomFromText('POINT(120.982 14.6077)', 4326)),
('CITY OF MARIKINA',4,geography::STGeomFromText('POINT(121.097 14.6409)', 4326)),
('CITY OF MUNTINLUPA',4,geography::STGeomFromText('POINT(121.05 14.4209)', 4326)),
('CITY OF NAVOTAS',4,geography::STGeomFromText('POINT(120.933 14.6775)', 4326)),
('CITY OF PARAÑAQUE',4,geography::STGeomFromText('POINT(121.017 14.4664)', 4326)),
('CITY OF PASIG',4,geography::STGeomFromText('POINT(121.061 14.5876)', 4326)),
('CITY OF SAN JUAN',4,geography::STGeomFromText('POINT(121.037 14.6001)', 4326)),
('CITY OF VALENZUELA',4,geography::STGeomFromText('POINT(120.967 14.6823)', 4326)),
('PASAY CITY',4,geography::STGeomFromText('POINT(121 14.5505)', 4326)),
('PATEROS',4,geography::STGeomFromText('POINT(121.071 14.5487)', 4326)),
('QUEZON CITY',4,geography::STGeomFromText('POINT(121.033 14.633)', 4326)),
('TAGUIG CITY',4,geography::STGeomFromText('POINT(121.062 14.5216)', 4326)),
('ALFONSO',8,geography::STGeomFromText('POINT(120.861 14.1214)', 4326)),
('AMADEO',8,geography::STGeomFromText('POINT(120.922 14.1693)', 4326)),
('BACOOR CITY',8,geography::STGeomFromText('POINT(120.974 14.413)', 4326)),
('CARMONA',8,geography::STGeomFromText('POINT(121.041 14.3108)', 4326)),
('CAVITE CITY',8,geography::STGeomFromText('POINT(120.897 14.4791)', 4326)),
('CITY OF DASMARIÑAS',8,geography::STGeomFromText('POINT(120.959 14.299)', 4326)),
('CITY OF GENERAL TRIAS',8,geography::STGeomFromText('POINT(120.907 14.3214)', 4326)),
('GEN. MARIANO ALVAREZ',8,geography::STGeomFromText('POINT(121.013 14.3051)', 4326)),
('GENERAL EMILIO AGUINALDO',8,geography::STGeomFromText('POINT(120.792 14.1931)', 4326)),
('IMUS CITY',8,geography::STGeomFromText('POINT(120.941 14.4064)', 4326)),
('INDANG',8,geography::STGeomFromText('POINT(120.873 14.192)', 4326)),
('KAWIT',8,geography::STGeomFromText('POINT(120.904 14.441)', 4326)),
('MAGALLANES',8,geography::STGeomFromText('POINT(120.746 14.1583)', 4326)),
('MARAGONDON',8,geography::STGeomFromText('POINT(120.735 14.253)', 4326)),
('MENDEZ (MENDEZ-NUÑEZ)',8,geography::STGeomFromText('POINT(120.902 14.1312)', 4326)),
('NAIC',8,geography::STGeomFromText('POINT(120.792 14.2965)', 4326)),
('NOVELETA',8,geography::STGeomFromText('POINT(120.88 14.4279)', 4326)),
('ROSARIO',8,geography::STGeomFromText('POINT(120.857 14.414)', 4326)),
('SILANG',8,geography::STGeomFromText('POINT(120.969 14.2142)', 4326)),
('TAGAYTAY CITY',8,geography::STGeomFromText('POINT(120.962 14.1153)', 4326)),
('TANZA',8,geography::STGeomFromText('POINT(120.85 14.3429)', 4326)),
('TERNATE',8,geography::STGeomFromText('POINT(120.678 14.2714)', 4326)),
('TRECE MARTIRES CITY (CAPITAL)',8,geography::STGeomFromText('POINT(120.868 14.2822)', 4326))

Bây giờ, dữ liệu đã được thiết lập xong, chúng tôi đã sẵn sàng để chuẩn bị báo cáo.

CHUẨN BỊ BÁO CÁO

Trước khi bắt đầu, chúng tôi cần hai trang báo cáo. Một trang dành cho dữ liệu theo khu vực và trang còn lại dành cho mỗi thành phố.

Báo cáo COVID-19 theo khu vực

Dưới đây là các bước đơn giản để tạo báo cáo theo khu vực:

  1. Kết nối với SQL Server từ Power BI. Cho biết máy chủ và cơ sở dữ liệu.
  2. Chọn các bảng và dạng xem bạn cần cho báo cáo.

3. Xác định các mối quan hệ - xem Hình 6 bên dưới. Để biết thêm chi tiết về cách xác định mối quan hệ trong Power BI, hãy truy cập trang này.

4. Nhấp vào Hình ảnh hóa bản đồ và điền vào các thuộc tính. Ràng buộc các thuộc tính vĩ độ và kinh độ từ vwRegionCoferences . Sau đó, Chú giải công cụ từ vwRegionCoctures’s Vùng cột. Và cuối cùng, Kích thước từ CityCases TotalCases cột. Xem Hình 7 bên dưới:

  1. Thêm một Trình cắt và liên kết nó với DateReported từ CityCases bảng.
  2. Chèn một thẻ và liên kết nó với TotalCases từ CityCases bảng
  3. Thêm Biểu đồ Thanh theo Nhóm. Liên kết thuộc tính Axis với Khu vực cột từ vwRegionCoferences . Sau đó, liên kết các Giá trị với TotalCases cột từ CityCases . Xem Hình 8 bên dưới:

Sau các bước trên, bạn sẽ thấy giao diện cuối cùng. Nó sẽ tương tự như Hình 9 bên dưới:

Báo cáo COVID-19 Theo Thành phố

Trang đầu tiên đã sẵn sàng. Việc thêm trang tiếp theo cho báo cáo cho mỗi thành phố không khó.

Đây là các bước:

  1. Thêm một trang mới bằng cách nhấp vào + từ phần dưới của cửa sổ và đổi tên nó thành Per City (Philippines).
  2. Bao gồm một bộ cắt và liên kết nó với khu vực từ vwRegionCoferences .
  3. Chèn một bộ cắt khác và liên kết nó với DateReported từ CityCases .
  4. Thêm một thẻ và liên kết nó với TotalCases từ CityCases .
  5. Chèn trực quan hóa Bản đồ. Bạn xác định thuộc tính vĩ độ và kinh độ từ vwCityCoferences . Chú giải công cụ đến từ vwCityCoosystem’s CityName và kích thước là từ CityCases TotalCases cột.
  6. Thêm Biểu đồ Thanh theo cụm và liên kết Trục với CityName cột từ vwCityCoferences và Giá trị cho TotalCases từ CityCases .

Giao diện cuối cùng của báo cáo cho mỗi thành phố sẽ tương tự như Hình 10 dưới đây:

Bây giờ, vấn đề lớn trong việc sử dụng bản đồ để phân tích so với việc xem biểu đồ thanh hoặc đường là gì?

Trước hết, nó không chỉ vì tính thẩm mỹ và gây ấn tượng với khán giả của bạn bằng các báo cáo bắt mắt. Quan trọng hơn, nó giúp họ hiểu rõ hơn về dữ liệu liên quan đến vị trí.

Trong ví dụ của chúng tôi, bạn có thể thấy nơi vấn đề đại dịch lan rộng hơn dựa trên mức độ lớn của bong bóng. Bên cạnh đó, chúng ta có thể nhìn thấy và so sánh trong nháy mắt số lượng các trường hợp ở các nơi khác nhau tương đối với nhau. Điều này cũng sẽ giúp các quan chức chính phủ đưa ra quyết định tốt hơn.

Mẫu báo cáo của chúng tôi quá đơn giản, nhưng nó chứng minh cách các kiểu dữ liệu địa lý của SQL Server có thể giúp bạn trong phân tích không gian địa lý.

Kết luận

Bạn đã hiểu những gì mang lại cho bạn khi sử dụng kiểu dữ liệu không gian địa lý chưa?

  • Dữ liệu không gian hoặc không gian địa lý là viết tắt của dữ liệu về các điểm nằm trên bề mặt Trái đất.
  • Nó có thể được sử dụng cho truy vấn "hàng xóm gần nhất" để tìm kiếm rạp chiếu phim, nhà hàng, câu lạc bộ gần đó, v.v.
  • Nó cũng hữu ích cho việc phân tích dữ liệu không gian địa lý, chẳng hạn như báo cáo chúng tôi đã tạo trong Power BI.
  • Các yếu tố cơ bản trong việc tạo một phiên bản địa lý là những thứ như văn bản nổi tiếng (WKT), mã định danh tham chiếu không gian (SRID) và phương pháp STGeomFromText .

Trong bài đăng này, chúng tôi chỉ đề cập đến một phần của dữ liệu không gian trong SQL Server có thể làm gì cho bạn. Bạn có thể không sử dụng tất cả chúng cùng một lúc, nhưng các trường hợp sử dụng phổ biến nhất đều có ở đây để giúp bạn bắt đầu. Tại sao không khám phá thêm từ các tài liệu tham khảo từ Microsoft bên dưới?

  • Tổng quan về dữ liệu không gian
  • Các kiểu dữ liệu không gian
  • Lập chỉ mục dữ liệu không gian

Nếu bạn thích bài đăng này, hãy chia sẻ nó với các nền tảng mạng xã hội yêu thích của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ mục Clustered và Non-Clustered thực sự có nghĩa là gì?

  2. Cách thêm mã hóa xml <? Xml version =1.0 encoding =UTF-8?> Vào Đầu ra xml trong SQL Server

  3. Làm cách nào tôi có thể sao chép cơ sở dữ liệu SQL Server trên cùng một máy chủ trong SQL Server 2008 Express?

  4. CAST (DATETIME AS DATE) trên mệnh đề WHERE

  5. Phân tích hiệu suất I / O cho SQL Server