Supabase som Backend as a Service · Lektion

Avancerade geospatiala data (PostGIS)

Integrera PostGIS för att hantera komplexa geospatiala data, utföra platsbaserade frågor och bygga kartfunktioner i din app

Lektion 2 av 311 steg

Avancerade geospatiala data (PostGIS) är en gratis lektion i Supabase som Backend as a Service på CoddyKit. Detta är lektion 2 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Supabase som Backend as a Service, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.

Lås upp geospatial kraft

Välkommen till avancerade geospatiala data (PostGIS)! I den här lektionen utforskar vi hur du hanterar platsbaserade data direkt i Supabase-databasen.

Geospatiala data är avgörande för appar som arbetar med kartor, platser, navigering eller närhetstjänster.

Vad är PostGIS?

PostGIS är ett kraftfullt tillägg med öppen källkod för PostgreSQL som lägger till stöd för geografiska objekt.

  • Det omvandlar databasen till en spatial databas.
  • Det gör det möjligt att lagra, söka i och analysera platsdata (punkter, linjer och polygoner).
  • Supabase bygger på PostgreSQL och har fullständigt stöd för PostGIS.

Varför använda PostGIS?

Traditionella databaser lagrar platser som separata kolumner för latitud och longitud, vilket gör komplexa frågor svåra.

PostGIS tillhandahåller specialiserade funktioner för att:

  • Beräkna avstånd mellan punkter.
  • Hitta platser inom en viss radie.
  • Avgöra om punkter ligger inom ett område.
  • Utföra komplexa spatiala kopplingar och analyser.

Aktivera PostGIS-tillägget

Innan du använder PostGIS måste du aktivera tillägget i ditt Supabase-projekt. Detta görs en gång via SQL Editor i Supabase Dashboard.

Kör helt enkelt följande kommando:

CREATE EXTENSION IF NOT EXISTS postgis;

Geospatiala datatyper

PostGIS introducerar nya datatyper för lagring av spatial information:

  • GEOMETRY: Lagrar data på ett tvådimensionellt kartesiskt plan (en platt jord-modell). Passar bra för små, lokala områden.
  • GEOGRAPHY: Lagrar data på ett sfäriskt jordklot (verkliga koordinater). Passar bäst för storskaliga, globala applikationer.

Vi använder huvudsakligen GEOMETRY för enkelhetens skull i exemplen, men GEOGRAPHY föredras ofta för verkliga avstånd.

Skapa en tabell med spatiala data

Vi skapar en tabell för att lagra intressepunkter, till exempel kaféer, med hjälp av en GEOMETRY-kolumn. SRID (Spatial Reference ID) 4326 är standard för latitud och longitud.

CREATE TABLE coffee_shops (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  location GEOMETRY(Point, 4326)
);

Infoga geospatiala punkter

För att infoga en punkt använder vi funktionen ST_GeomFromText(), som omvandlar en representation i Well-Known Text (WKT) till ett PostGIS-geometriobjekt. Formatet är 'POINT(longitude latitude)'.

INSERT INTO coffee_shops (name, location) VALUES
('Espresso Hub', ST_GeomFromText('POINT(-0.1278 51.5074)', 4326)),
('Bean Scene', ST_GeomFromText('POINT(-0.1419 51.5085)', 4326)),
('Daily Grind', ST_GeomFromText('POINT(-0.1000 51.5200)', 4326));

Hitta närmaste platser

En vanlig uppgift är att hitta platser nära en viss punkt. Vi kan använda ST_Distance() för att beräkna avståndet mellan två geometripunkter. Avståndsenheten beror på SRID (till exempel meter för 4326 med typen GEOGRAPHY och grader med typen GEOMETRY).

Här hittar vi butiker nära en referenspunkt, till exempel användarens aktuella plats.

SELECT
  name,
  ST_Distance(
    location,
    ST_GeomFromText('POINT(-0.1300 51.5090)', 4326)
  ) AS distance_in_degrees
FROM
  coffee_shops
ORDER BY
  distance_in_degrees
LIMIT 1;

Effektiv närhetssökning

För effektivare närhetssökningar, särskilt när du arbetar med typer av GEOGRAPHY för avstånd i den verkliga världen, är ST_DWithin() ett utmärkt val. Funktionen kontrollerar om två geometrier ligger inom ett angivet avstånd.

Vi tar fram alla kaféer inom 1000 meter från en viss punkt och använder GEOGRAPHY för en exakt avståndsberäkning.

SELECT
  name
FROM
  coffee_shops
WHERE
  ST_DWithin(
    location::geography,
    ST_GeomFromText('POINT(-0.1300 51.5090)', 4326)::geography,
    1000 -- 1000 meters
  );

Kontroll av PostGIS-fråga

Ni har lärt er att aktivera PostGIS, skapa tabeller med spatiala kolumner samt lägga in och söka efter geospatiala data.

Vilken PostGIS-funktion skulle ni vanligtvis använda för att hitta alla intressepunkter som ligger inom 500 meter från en användares aktuella position, om ni använder typen GEOGRAPHY?

Sammanfattning: geospatiala data

Bra jobbat! Ni har tagit era första steg in i världen av geospatiala data med PostGIS och Supabase.

  • Vi aktiverade PostGIS-tillägget.
  • Ni lärde er om typerna GEOMETRY och GEOGRAPHY.
  • Ni skapade tabeller och lade in data med hjälp av WKT.
  • Ni utförde grundläggande spatiala frågor, till exempel avståndsberäkning och närhetssökningar, med ST_Distance() och ST_DWithin().

PostGIS öppnar upp en mängd möjligheter för platsmedvetna applikationer!

Gratis att börja

Lär dig Supabase som Backend as a Service med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
11
Lektioner
40

Vanliga frågor

Är lektionen ”Avancerade geospatiala data (PostGIS)” gratis?

Ja – hela texten till ”Avancerade geospatiala data (PostGIS)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Supabase som Backend as a Service, kan Ni uppgradera till CoddyKit PRO. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.

Vad lär jag mig i ”Avancerade geospatiala data (PostGIS)”?

Integrera PostGIS för att hantera komplexa geospatiala data, utföra platsbaserade frågor och bygga kartfunktioner i din app Ni övar på Supabase som Backend as a Service med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Supabase som Backend as a Service?

Du behöver inga förkunskaper. Utbildningen i Supabase som Backend as a Service på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.

Hur lång tid tar lektionen ”Avancerade geospatiala data (PostGIS)”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Supabase som Backend as a Service-lektionen?

Ja. Varje Supabase som Backend as a Service-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Använda Postgres-tillägg
  2. Avancerade geospatiala data (PostGIS)
  3. Fulltextsökning och vektorinbäddningar med pgvector
← Tillbaka till Supabase som Backend as a Service