Menu
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

GeomFromText(’POINT ($east $north)’,3006)

Posted on 2011-08-08

Jag visade i ett tidigare inlägg hur man kan skapa ett enkelt webgränssnitt för att läsa och uppdatera data i en geodatabas (länk).

I denna artikel går jag igenom hur man kan skapa sidor som även lägger till information i geodatabasen från värden i ett formulär. Allt kretsar kring texten i rubriken här ovan.

Jag skapade i samband med förra artikeln en sida där det gick att söka på nyckelord i en databas och visa de bilder som har dessa nyckelord kopplade till sig.

Jag använde då kommandot ”AsText(the_geom) AS geom” i min SQL sats för att hämta geometrin i kolumnen ”the_geom” i min PostGis databas. Nu är det dags att göra tvärt om.

Jag skapar ett formulär med fälten time, east, north, riktning, cmt, bild_s och bild.

I php tilldelas värdena från dessa fält variabler med motsvarande namn (ex): $cmt = $_POST[’cmt’];

Min SQL sats visas på raderna nedan, och det vi skall titta lite närmare på är en av variablerna.

INSERT INTO fotografier (the_geom, time, riktning, cmt, bild_s, bild) VALUES (GeomFromText(’POINT($east $north)’,3006), ’$time’, $riktning, ’$cmt’, ’$bild_s’, ’$bild’)

GeomFromText omvandlar geometri i textform till geometri i databasen. Jag använder mig av punkter, men det finns motsvarande kommandon för linjer och ytor också.

GeomFromText består av två delar, dels punktens koordinat (eller koordinater för linjer och ytor) och CRS för det koordinatsystem man använder, i mitt fall SWEREF99TM – 3006.

Koordinaterna är uppsättningar om två flyttal med decimalpunkt vid behov och ett ”space” tecken emellan, om det är linjer eller ytor så är det flera uppsättningar av koordinater och de är då separerade med komma.

Om allt stämmer så kommer SQL kommandot att skapa en ny rad i databasen och lägga till de data som du fyllt i formuläret.

Mitt enkla formulär.

Resultatet i Google Earth.

Vill du titta på mina fotosidor så surfa in på denna länk, visa sedan resultatet i exempelvis Google Earth genom att ladda ner denna KMZ fil.

Om du vill ladda upp bilder i formuläret så var snäll och säkerställ att allt ifyllt är korrekt, eftersom jag inte har fixat någon felkontroll ännu.

0 thoughts on “GeomFromText(’POINT ($east $north)’,3006)”

  1. Rasmus Johansson skriver:
    2012-10-17 kl. 08:32

    Hej!
    Först vill jag bara säga du har skapat en väldigt bra och trevlig hemsida med mycket nyttigt för dem som är intresserade av GIS och teknik.

    Jag håller på att skapa en webbkarta i Open source för mina barn där jag vill att de kan se vart vi har rest i hela världen och där de skall lära sig geografi. Det hade då varit roligt och nyttigt för dem att även få med foton från våra resor så att de har något att associera resorna med.

    Jag vill precis så som du har gjort, skapa en hemsida där vi kan fylla i ett formulär som är kopplat till min postgis-databas och geoserver och lägga in data med foto däri.

    Kan du tipsa om hur postgis-databasen och tabellen däri skall vara konfigurerad för att kunna ta emot latitude och longitude samt hur PHP-scriptet också skall se ut?

    här är mitt PHP testscript:

    Datum:

    Longitude:

    Latitude:

    Kommentar:

    Bild:

    Hoppas på hjälp!

    Hälsningar

    Raz

    Svara
    1. Klas Karlsson skriver:
      2012-10-18 kl. 16:47

      Hej Raz!

      Kul att du gillar sidan.

      Det är en intressant idé du har, och det borde inte vara några problem att ordna.

      Jag brukar skapa mina PostGIS tabeller i QGIS och exportera dessa till PostGIS. Men det går att göra på flera sätt.

      När man väl har en tabell man är nöjd med och som fungerar i exempelvis QGIS (eller Geoserver) så är det ganska enkelt att fixa ett webformulär som uppdaterar tabellen.

      Nedan ser du de centrala delarna av php skriptet från min sida fotoadd.php. Detta är ett formulär som anropar sig självt och vid behov uppdaterar databasen med ett SQL kommando. Du kan anpassa skriptet till dina egna behov ganska enkelt. Exempelvis använder jag koordinater i SWEREF99TM, men om du vill använda lat/long i WGS-84 så byter du 3006 mot 4326 och skriver in decimala grader i Easting och Northing fälten.

      <!– Formulär för att fylla i data för ny bild. Pekar på detta dokument –>
      <form action=”fotoadd.php” method=”post”>
      Datum: <input type=”text” name=”time”><small>ex: 2011-08-08 18:49</small><br>
      SWEREF 99 TM:<br>
      Öst/East: <input type=”text” name=”east”>
      Nord/North: <input type=”text” name=”north”><br>
      Riktning: <input type=”text” name=”riktning”><small>ex: 141</small><br>
      Kommentar: <textarea name=’cmt’ cols=40 rows=5></textarea><br>
      Bild URL liten: <input type=”text” name=”bild_s”><small>ca 256 pixel bred</small><br>
      Bild URL stor: <input type=”text” name=”bild”><small>ca 1024 pixel bred</small><br>
      Är du säker på att du fyllt i allt korrekt!!!<br>
      <input type=”submit”>
      </form>

      <!– PHP kod för SQL –>

      <?php
      $dbh = pg_connect(”host=192.168.0.111 port=5432 dbname=testdb user=postgres”);
      if (!$dbh) {
      die(”Error in connection: ” . pg_last_error());
      }

      // Hämta Post och kontroller, därefter uppdatera data
      $time = $_POST[’time’]; // Hämta datum.
      $east = $_POST[’east’]; // Hämta datum.
      $north = $_POST[’north’]; // Hämta datum.
      $riktning = $_POST[’riktning’]; // Hämta datum.
      $cmt = $_POST[’cmt’]; // Hämta datum.
      $bild_s = $_POST[’bild_s’]; // Hämta datum.
      $bild = $_POST[’bild’]; // Hämta datum.
      // Felsökning
      // echo ”<small>$time<br>$east<br>$north<br>$riktning<br>$cmt<br>$bild_s<br>$bild</small>”;
      if ($east) {
      $sqle = ”INSERT INTO fotografier (the_geom, time, riktning, cmt, bild_s, bild) VALUES (GeomFromText(’POINT($east $north)’,3006), ’$time’, $riktning, ’$cmt’, ’$bild_s’, ’$bild’)”;
      // echo ”<br><small>$sqle</small><br><br>”;
      $result = pg_query($dbh, $sqle);
      if (!$result) {
      die(”Error in SQL query: ” . pg_last_error());
      }
      }

      // execute query
      // free memory
      pg_free_result($result);

      // close connection
      pg_close($dbh);

      ?>

      Lycka till

      /Klas

      Svara

Lämna ett svar till Rasmus Johansson Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • Gabriel om Punktmoln i QGIS 3.18
  • klakar om Punktmoln i QGIS 3.18
  • Gabriel om Punktmoln i QGIS 3.18
  • Hector Garrido om QGIS LTR vs LTR
  • Christian om Stildelning för QGIS

Arkiv

Prenumerera på Geosupportsystem

Skriv in namn och epost för att prenumerera på meddelanden från denna blogg.
Loading

geosupport

YouTube video to frames. Processed in OpenDroneMap YouTube video to frames. Processed in OpenDroneMap and visualized in QGIS 3.17.
Japp! Dubbelbeställde TVÅ gånger. En annan mode Japp! Dubbelbeställde TVÅ gånger. En annan modell levererades idag.
Ooops. Tryckte nog för många gånger på bestäl Ooops. Tryckte nog för många gånger på beställ-knappen...
Ladda mer...

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2021 Geosupportsystem | WordPress Theme by Superbthemes.com