sql >> Database >  >> RDS >> Sqlserver

Hoe u het gegevenstype aardrijkskunde van SQL Server kunt begrijpen

Het gegevenstype SQL Server Geography is anders dan andere typen, simpelweg omdat u het niet vaak gebruikt. Het is niet zoals varchar , int , zweven , of DateTime aanwezig in elke tabel, tenminste in één type.

Hebben we het gegevenstype SQL Server Geography nodig? Om iets nieuws te begrijpen, moeten we drie fundamentele vragen beantwoorden:

Welke problemen lost het op ? Het antwoord ligt in use-cases.
Wat komt er allemaal kijken bij het bestuderen ervan? Je leert een paar basisdefinities en acroniemen. Ik heb alleen de belangrijke dingen verzameld, dus je zult je niet vervelen.
Zijn er voorbeelden om verder uit te leggen hoe het werkt en is het eenvoudig te implementeren? Onze soort leeft met code. We eten en slapen ermee. We zullen dus voorbeeldcodes in dit bericht hebben.

Het is geen bericht om je vol te proppen met technisch jargon en syntaxis zoals het is. Je bent klaar om te gaan als je eenmaal de basis van het geografie-gegevenstype van SQL Server hebt gekraakt. Klinkt goed?

Laten we erin duiken.

Gevallen van ruimtelijke gegevens gebruiken

Laten we beginnen met de meest voor de hand liggende en de meest voor de hand liggende - de algemene term 'ruimtelijke gegevens'.

Ruimtelijke of geospatiale gegevens zijn de gegevens over objecten, gebeurtenissen of verschijnselen die zich op het aardoppervlak bevinden. Met andere woorden, het is informatie die op een kaart is gepropt. Denk bijvoorbeeld aan Google Maps of Waze.

Maar er is meer:

  • Zoek een bestelwagen van het bedrijf via een website of mobiele app.
  • Zoek nuttige punten zoals nabijgelegen restaurants, banken of ziekenhuizen.
  • Analyseer gegevens over aardbevingen, de verspreiding van COVID-19, overstromingen of wegverkeer - geospatiale analyse.

En zo verder.

Verschillende databaseplatforms houden zich bezig met ruimtelijke gegevens, maar we zullen ons op slechts één concentreren.

Wat is SQL Server Geografie-gegevenstype?

Microsoft heeft gegevenstypen voor geografie en geometrie toegevoegd in SQL Server 2008. Geografie vertegenwoordigt gegevens in een rond-aarde-coördinatensysteem. Het is ook geïmplementeerd als een .Net CLR-gegevenstype, dat eigenschappen heeft zoals breedtegraad of lengtegraad.

Dit bericht richt zich op het gegevenstype aardrijkskunde en de toepassingen ervan, met name in:

  • Aandachtspunten, zoals het vinden van restaurants in de buurt en een voorbeeldzoekopdracht.
  • Geospatiale analyse.

Aangezien dit een gegevenstype is, maken we een tabel. Vervolgens definiëren we een kolom of kolommen als geografie. En tot slot maken we een ruimtelijke index op die kolommen.

Wanneer u een tabel met een geografische kolom doorzoekt, is de uitvoer binair.

Laten we proberen een eenvoudig voorbeeld hieronder uit te voeren:

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

Afbeelding 1 hieronder toont de resultatenset:

Als een resultatenset ruimtelijke gegevens bevat, wordt een Ruimtelijke resultaten tabblad verschijnt ook. Afbeelding 2 illustreert de ruimtelijke resultaten van de bovenstaande zoekopdracht:

Wat is er zojuist gebeurd?

Het lijkt erop dat het bekijken van de resultatenset verre van eenvoudig en nuttig is, laat staan ​​de stippen langs rasterlijnen. Ik liet je zien wat je kunt verwachten bij de allereerste SELECT verklaring over geografische gegevenstypen. Het volgende gedeelte zal een veel beter perspectief ontvouwen.

Geografie-instanties van SQL Server maken

U hebt een exemplaar nodig om te werken met gegevens met het gegevenstype SQL Server geografie. Er zijn vier manieren om een ​​geografische instantie te maken:

  1. van een andere geografische instantie
  2. een bekende tekst gebruiken (WKT)
  3. een bekend binair (WKB) gebruiken
  4. van een Geography Markup Language (GML) tekstinvoer

Laten we ons concentreren op het gebruik van een bekende tekst.

Bekende tekst (WKT) gebruiken

Deze voorstelling is gebaseerd op het Open Geospatial Consortium (OGC). Hiermee kunnen geografische gegevens in tekstvorm worden uitgewisseld.

Neem ons vorige voorbeeld, maar in plaats van een binaire output, zullen we deze converteren naar een string:

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

Let op de ToString () methode. Het converteert de uitvoer naar de tekenreekswaarde. U kunt de uitvoer zien in Afbeelding 3 hieronder:

Beter? Nou, het zijn nog maar cijfers. Maar wat als ik je vertel dat deze getallen de lengte- en breedtegraad van die steden zijn? Het is logischer, toch?

Het is een bekende tekst (WKT) en het is essentieel wanneer u de gegevens in de kolom plaatst. Daarover later meer. Nu moeten we nog één ding onderzoeken.

Spatial Reference Identifier (SRID)

Afgezien van een bekende tekst, heeft elke geografische instantie een Spatial Reference Identifier (SRID). Het is nodig voor het meten van geografie-instanties (plaatsen of punten) in een rond-aarde-mapping.

De meest voorkomende maateenheid is in meters of vierkante meters, aangeduid met de SRID 4326. Alle andere SRID's zijn te vinden in sys.spatial_reference_systems .

Uw geografische kolommen kunnen verschillende SRID's hebben. Houd er rekening mee dat wanneer u bewerkingen uitvoert op twee geografische instanties, zoals het meten van hun afstanden. Beide instanties moeten dezelfde SRID hebben, anders krijgt u NULL .

STGeomFromText

Na kennis te hebben genomen van WKT en SRID, vereist het maken van een geografische instantie een methode met de naam STGeomFromText . Het heeft de volgende syntaxis:

geografie::STGeomFromText( , SRID )

Voorbeeld:

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

Laten we eens kijken naar de parameterwaarden:

'PUNT(14.6077 120.98202)' – een bekende tekst van een punt op de kaart met de breedtegraad van 14,6077 en de lengtegraad van 120,98202. Dit komt overeen met Manilla, de hoofdstad van de Filippijnen.

4326 – de ruimtelijke referentie-identificatie

Laten we meteen naar voorbeelden springen en dit nieuwe juweeltje gebruiken dat we hebben gevonden.

SQL Server Geografie Gegevenstype Praktische Voorbeelden

We gaan twee gemeenschappelijke applicaties hebben om u aan de slag te laten gaan met geografische gegevens.

Afstanden berekenen (dichtstbijzijnde buur)

Een veelgebruikte toepassing in geografische ruimtelijke gegevens wordt de dichtstbijzijnde buurquery genoemd. In deze zoekopdracht wil je weten hoe ver of dichtbij iets is van een ander object of een andere plaats.

In mijn post over de SQL-grafiek heb ik beschreven hoe een klant de nabijgelegen restaurants vanaf de huidige locatie kan vinden. Laten we nog eens naar dat voorbeeld verwijzen:

-- 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

Het geheim van deze zoekopdracht voor naaste buren is STDistance (). Het heeft twee geografische locaties nodig:een voor de klant en een andere voor de restaurants binnen 1000 meter van de locatie van de klant.

Het leuke is dat hetzelfde concept van toepassing is op andere ideeën met twee of meer locaties.

Geospatiale analyse met Power BI

Een andere toepassing van ruimtelijke gegevens is het gebruik ervan voor geospatiale analyse. In deze sectie hebben we een voorbeeld waarin we COVID-19-gevallen per locatie gebruiken en presenteren met Power BI.

(Terzijde, hier is meer informatie over wat Power BI is en hoe het te installeren)

Het installeren van Power BI Desktop is gratis. Een van de standaardvisualisaties is de kaartvisualisatie met Bing Maps. We hebben geen coördinaten nodig voor bekende locaties zoals landen en Amerikaanse staten. Zie dit in het onderstaande voorbeeld:

Let op het rode vak in figuur 4. Breedtegraad en lengtegraad zijn leeg gelaten, maar de bubbels worden prima op de kaart uitgezet.

In het volgende voorbeeld zullen we echter regio's en steden in de Filippijnen gebruiken. Coördinaten zijn een must om de bellen correct te plotten.

WAT U NODIG HEBT

Voordat we ingaan op het vlezige deel van het rapport, zijn hier de basisdingen die we nodig hebben:

  • Power BI Desktop
  • Kaartvisualisatie
  • Tabellen en zoekopdrachten
  • Voorbeeldgegevens

DE GEGEVENS VOORBEREIDEN

De tabellen en weergaven voorbereiden

In het begin moeten we de containers voor onze gegevens opzetten. We hebben dus de volgende tabellen nodig:

  1. Steden – een lijst met steden in de Filipijnen, gecategoriseerd per regio.
  2. Regio's – een lijst met gebieden in de Filipijnen
  3. CityCases – een lijst met het aantal gevallen voor elke stad.

Hieronder is de tabelstructuur:

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

Aangezien het geografische gegevenstype onbekend is in Power BI-kaartvisualisatie, moet u weergaven maken. Het doel is om de breedte- en lengtegraad van die kolommen bloot te leggen. We doen dit voor de steden en regio's – zie hieronder:

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

Dat is het. Latijn en Lang zijn eigenschappen voor breedte- en lengtegraad. Het is nu mogelijk om ze te gebruiken in ons Power BI-rapport.

De gegevens opbouwen

Vervolgens moet u de gegevens voor onze drie tabellen opbouwen.

Veel dank aan het Filippijnse ministerie van Volksgezondheid voor het beschikbaar stellen van de dataset voor het publiek. Het bestand is in CSV-formaat. De bestandsnaamconventie is DOH COVID Data Drop_ yyyymmdd – 04 Case Information.CSV.

Hier leest u hoe u het bestand kunt krijgen om een ​​betere hands-on te krijgen met ons voorbeeld:

  1. Klik op de link naar de dataset.
  2. Selecteer een maandmap. Augustus 2020 staat in DOH COVID-gegevens (08).
  3. Selecteer een datum. 12 augustus 2020 staat bijvoorbeeld in DOH COVID Data Drop_20200812.
  4. Download DOH COVID-gegevens Drop_ 20200812 – 04 Case Information.CSV. Herhaal stap 2-4 om het rapport voor de andere dagen te krijgen.

Bovendien moet u die gegevens importeren in SQL Server. Zo doe je het:

  1. Open het CSV-bestand in Excel.
  2. Voeg een kolom toe DateReported en vul alle records met de bijbehorende datum. In dit geval 08/10/2020.
  3. Sla het op als een Excel-bestand (.xlsx).
  4. Exporteer het Excel-bestand naar SQL Server naar een tabel met de naam covid_ph .

Nu de gegevens gereed zijn in SQL Server, is de volgende taak om het volgende uit te voeren in de SSMS-query-editor:

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

Ondertussen zijn er geen coördinaten in de dataset die we hebben gebruikt. Ik heb dus handmatig de breedte- en lengtegraad van regio's en steden toegevoegd van latlongdata.com.

Dit zijn de gegevens voor Regio's :

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))

Dit zijn de gegevens van een gedeeltelijke lijst met steden voor steden tafel:

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))

Nu de gegevens helemaal zijn ingesteld, zijn we klaar om het rapport voor te bereiden.

VOORBEREIDING VAN HET RAPPORT

Voordat we beginnen, hebben we twee pagina's met rapporten nodig. De ene pagina is voor de gegevens per regio en de andere pagina is per stad.

COVID-19-rapport per regio

Hier zijn eenvoudige stappen om het rapport per regio te maken:

  1. Maak verbinding met SQL Server vanuit Power BI. Geef de server en de database aan.
  2. Kies de tabellen en weergaven die u nodig heeft voor het rapport.

3. Definieer de relaties – zie figuur 6 hieronder. Bezoek deze pagina voor meer informatie over het definiëren van relaties in Power BI.

4. Klik op de kaartvisualisatie en vul de eigenschappen in. Bind de eigenschappen voor breedtegraad en lengtegraad uit de vwRegionCoordinates . Dan de knopinfo van vwRegionCoordinates's Regio kolom. En tot slot, de grootte van CityCases ' TotalCases kolom. Zie Afbeelding 7 hieronder:

  1. Voeg een slicer toe en bind deze aan DateReported van CityCases tafel.
  2. Plaats een kaart en bind deze aan TotalCases van CityCases tafel
  3. Voeg een geclusterd staafdiagram toe. Bind de eigenschap Axis aan Regio kolom uit vwRegionCoordinates . Bind vervolgens de waarden aan TotalCases kolom uit CityCases . Zie Afbeelding 8 hieronder:

Na de bovenstaande stappen ziet u de uiteindelijke look. Het zou vergelijkbaar moeten zijn met Afbeelding 9 hieronder:

COVID-19-rapport per stad

De eerste pagina is klaar. Het toevoegen van de volgende pagina voor het rapport per stad zou niet moeilijk moeten zijn.

Dit zijn de stappen:

  1. Voeg een nieuwe pagina toe door op de + in het onderste deel van het venster te klikken en hernoem deze Per stad (Filipijnen).
  2. Voeg een slicer toe en bind deze aan de regio van vwRegionCoordinates .
  3. Voeg nog een slicer in en bind deze aan DateReported van CityCases .
  4. Voeg een kaart toe en bind deze aan TotalCases van CityCases .
  5. Voeg een kaartvisualisatie in. U definieert de eigenschappen voor breedtegraad en lengtegraad uit de vwCityCoordinates . De knopinfo is van vwCityCoordinates Stadsnaam kolom, en de grootte is van CityCases ' TotalCases kolom.
  6. Voeg een geclusterd staafdiagram toe en bind de as aan CityName kolom uit vwCityCoordinates en waarden naar TotalCases van CityCases .

Het uiteindelijke uiterlijk van het rapport per stad zou vergelijkbaar moeten zijn met Afbeelding 10 hieronder:

Wat is er nu zo belangrijk aan het gebruik van kaarten voor analyse in vergelijking met het kijken naar staaf- of lijndiagrammen?

Allereerst is het niet alleen voor de esthetiek en om indruk te maken op uw publiek met opvallende rapporten. Wat nog belangrijker is, het geeft hen een beter begrip van de gegevens met betrekking tot een locatie.

In ons voorbeeld kunt u zien waar het pandemische probleem meer wijdverbreid is op basis van hoe groot de bubbels zijn. Bovendien kunnen we in één oogopslag het aantal gevallen van verschillende plaatsen ten opzichte van elkaar zien en vergelijken. Dit zal overheidsfunctionarissen ook helpen betere beslissingen te nemen.

Ons rapportvoorbeeld is te eenvoudig, maar het laat zien hoe de geografie-gegevenstypen van SQL Server u kunnen helpen bij geospatiale analyse.

Conclusie

Heb je begrepen wat er voor jou in zit bij het gebruik van het ruimtelijke gegevenstype geografie?

  • Ruimtelijke of geospatiale gegevens staan ​​voor de gegevens over punten op het aardoppervlak.
  • Het kan worden gebruikt voor de "dichtstbijzijnde buur"-zoekopdracht om te zoeken naar bioscopen, restaurants, clubs, enz. in de buurt.
  • Het is ook handig voor geospatiale gegevensanalyse, zoals het rapport dat we in Power BI hebben gemaakt.
  • De fundamentele elementen bij het maken van een geografische instantie zijn zaken als bekende tekst (WKT), ruimtelijke referentie-ID (SRID) en de methode STGeomFromText .

In dit bericht hebben we slechts een deel aangeroerd van wat ruimtelijke gegevens in SQL Server voor u kunnen doen. U gebruikt ze misschien niet allemaal tegelijk, maar de meest voorkomende gebruiksscenario's zijn hier om u op weg te helpen. Waarom zou u niet meer ontdekken uit de referenties van Microsoft hieronder?

  • Overzicht ruimtelijke gegevens
  • Ruimtelijke gegevenstypen
  • Ruimtelijke gegevens indexeren

Als je dit bericht leuk vindt, deel het dan met je favoriete sociale-mediaplatforms.


  1. Gebruik MySQL relationele databases op Ubuntu 10.10 (Maverick)

  2. JDBC-batchbewerkingen begrijpen

  3. Uitgebreide evenementen voor SSAS

  4. MariaDB MaxScale Load Balancing op Docker:implementatie:deel één