Mit raumbezogenen Daten arbeiten
Mit raumbezogenen Analysen können Sie geografische Daten in BigQuery analysieren. Geografische Daten werden auch als raumbezogene Daten bezeichnet.
Zu den gängigen Objekttypen bei der Arbeit mit räumlichen Daten gehören die folgenden:
- Eine Geometrie stellt eine Oberfläche auf der Erde dar. Sie wird häufig mithilfe von Punkten, Linien, Polygonen oder einer Sammlung von Punkten, Linien und Polygonen beschrieben. Eine Geometriesammlung ist eine Geometrie, die die räumliche Vereinigung aller Formen in der Sammlung darstellt.
- Eine räumliche Funktion steht für ein logisches räumliches Objekt. Sie kombiniert eine Geometrie mit zusätzlichen anwendungsspezifischen Attributen.
- Eine Sammlung räumlicher Funktionen besteht aus einer Reihe von räumlichen Funktionen.
In BigQuery stellt der Datentyp GEOGRAPHY
eine Geometrie oder Geometriesammlung dar. Zur Darstellung von räumlichen Merkmalen erstellen Sie eine Tabelle mit einer GEOGRAPHY
-Spalte für die Geometrie sowie mit zusätzlichen Spalten für die Attribute. Jede Tabellenzeile ist eine räumliche Funktion und die gesamte Tabelle steht für eine Sammlung räumlicher Funktionen.
Der Datentyp GEOGRAPHY
beschreibt einen Punktsatz auf der Erdoberfläche. Ein Punktsatz ist eine Menge von Punkten, Linien und Polygonen auf dem WGS84-Referenzsphäroid mit geodätischen Kanten. Sie können den Datentyp GEOGRAPHY
durch Aufrufen einer der geografischen Funktionen von GoogleSQL verwenden.
Raumbezogene Daten laden
Einzelne Punkte auf der Erde können einfach durch das Wertepaar Längengrad, Breitengrad beschrieben werden.
Sie können beispielsweise eine CSV-Datei laden, die Werte für Längen- und Breitengrad enthält, und diese dann mit der Funktion ST_GEOGPOINT
in GEOGRAPHY
-Werte konvertieren.
Für komplexere geografische Standorte können Sie die folgenden raumbezogenen Datenformate in eine GEOGRAPHY
-Spalte laden:
- Well-known Text (WKT)
- Well-known Binary (WKB)
- GeoJSON
- GeoParquet
WKT- oder WKB-Daten laden
WKT ist ein Textformat zur Beschreibung einzelner geometrischer Formen mit Punkten, Linien, Polygonen mit optionalen Löchern oder einer Sammlung von Punkten, Linien oder Polygonen. WKB ist die binäre Version des WKT-Formats. WKB kann für Formate, die keine Binärdaten wie JSON unterstützen, Hex-codiert werden.
Im Folgenden wird zum Beispiel ein Punkt in WKT definiert:
POINT(-121 41)
Zur Beschreibung einer räumlichen Funktion ist WKT normalerweise in ein Container-Dateiformat wie eine CSV-Datei oder in eine Datenbanktabelle eingebettet. Eine Dateizeile oder eine Tabellenzeile entspricht in der Regel der räumlichen Funktion. Die gesamte Datei oder die gesamte Tabelle entspricht der Funktionssammlung. Zum Laden von WKT-Daten in BigQuery geben Sie ein Schema an, das eine GEOGRAPHY
-Spalte für die raumbezogenen Daten angibt.
Sie haben beispielsweise eine CSV-Datei mit folgenden Daten:
"POLYGON((-124.49 47.35,-124.49 40.73,-116.49 40.73,-116.49 47.35,-124.49 47.35))",poly1
"POLYGON((-85.6 31.66,-85.6 24.29,-78.22 24.29,-78.22 31.66,-85.6 31.66))",poly2
"POINT(1 2)",point1
Sie können diese Datei mit dem Befehl load
des bq-Befehlszeilentools laden:
bq load --source_format=CSV \
--schema="geography:GEOGRAPHY,name:STRING" \
mydataset.mytable filename1.csv
Weitere Informationen zum Laden von Daten in BigQuery finden Sie unter Einführung in das Laden von Daten.
Sie können WKT-Daten in eine vorhandene BigQuery-Tabelle mit der Spalte GEOGRAPHY
streamen, indem Sie Daten als String in der API-Anfrage serialisieren.
bq
Führen Sie den Befehl insert
des bq-Befehlszeilentools aus:
echo '{"geo": "LINESTRING (-118.4085 33.9416, -73.7781 40.6413)"}' \
| bq insert my_dataset.geo_table
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Weitere Informationen zum Streamen von Daten in BigQuery finden Sie unter Daten in BigQuery streamen.
Sie können einen WKT-Textstring mit der Funktion ST_GeogFromText
in einen GEOGRAPHY
-Wert konvertieren.
GeoJSON-Daten laden
GeoJSON ist ein JSON-basiertes Format für Geometrien und räumliche Funktionen. Im Folgenden wird zum Beispiel ein Punkt in GeoJSON definiert:
{ "type": "Point", "coordinates": [-121,41] }
GeoJSON-Daten können die folgenden Objekttypen enthalten:
- Geometrieobjekte. Ein Geometrieobjekt ist eine räumliche Form, die als Vereinigung von Punkten, Linien und Polygonen mit optionalen Löchern beschrieben wird.
- Funktionsobjekte. Ein Funktionsobjekt enthält eine Geometrie sowie zusätzliche Name/Wert-Paare, deren Bedeutung anwendungsspezifisch ist.
- Funktionssammlungen. Eine Sammlung Funktionen besteht aus einer Reihe von Funktionsobjekten.
Es gibt zwei Möglichkeiten, GeoJSON-Daten in BigQuery zu laden:
- Laden Sie durch Zeilenumbruch getrennte GeoJSON-Dateien.
- Einzelne GeoJSON-Geometrieobjekte laden, die in andere Dateitypen eingebettet sind.
Durch Zeilenumbruch getrennte GeoJSON-Dateien laden
Eine durch Zeilenumbruch getrennte GeoJSON-Datei enthält eine Liste von GeoJSON-Funktionsobjekten, eines pro Zeile in der Datei. Ein GeoJSON-Funktionsobjekt ist ein JSON-Objekt mit den folgenden Mitgliedern:
type
Für Featureobjekte muss der WertFeature
lauten. BigQuery validiert den Wert, fügt ihn aber nicht in das Tabellenschema ein.geometry
Der Wert ist ein GeoJSON-Geometry
-Objekt odernull
. BigQuery konvertiert dieses Mitglied in einenGEOGRAPHY
-Wert.properties
Der Wert ist ein beliebiges JSON-Objekt oder null. Wenn der Wert nichtnull
ist, lädt BigQuery jedes Mitglied des JSON-Objekts als separate Tabellenspalte. Weitere Informationen darüber, wie BigQuery JSON-Datentypen parst, finden Sie unter Details zum Laden von JSON-Daten.id
. Optional. Wenn vorhanden, ist der Wert entweder ein String oder eine Zahl. BigQuery lädt diesen Wert in eine Spalte mit dem Namenid
.
Wenn das Featureobjekt andere Mitglieder enthält, die hier nicht aufgeführt sind, konvertiert BigQuery diese Mitglieder direkt in Tabellenspalten.
Sie können eine durch neue Zeilen getrennte GeoJSON-Datei mit dem Befehl bq
load
des bq-Befehlszeilentools wie folgt laden:
bq load \ --source_format=NEWLINE_DELIMITED_JSON \ --json_extension=GEOJSON \ --autodetect \ DATASET.TABLE \ FILE_PATH_OR_URI
Ersetzen Sie Folgendes:
DATASET
ist der Name des Datasets.TABLE
ist der Name der Zieltabelle.FILE_PATH_OR_URI
ist ein Pfad zu einer lokalen Datei oder einem Cloud Storage-URI.
Im vorherigen Beispiel wird die automatische Schemaerkennung aktiviert. Wenn Sie besser steuern möchten, wie BigQuery die Werte im Objekt properties
konvertiert, können Sie stattdessen ein explizites Schema angeben. Weitere Informationen finden Sie unter Schemas angeben.
Wenn Sie ein explizites Schema angeben, nehmen Sie keine übergeordnete type
-Spalte in die Schemadefinition auf. Legen Sie für jedes Mitglied des Mitglieds properties
eine separate Spalte fest, keine einzelne verschachtelte Spalte.
Gemäß RFC 7946 ist eine vollständige GeoJSON-Datenstruktur ein einzelnes JSON-Objekt. Viele Systeme exportieren GeoJSON-Daten als ein einzelnes FeatureCollection
-Objekt, das alle Geometrien enthält. Um dieses Format in BigQuery zu laden, müssen Sie die Datei konvertieren. Entfernen Sie dazu das FeatureCollection
-Objekt auf Stammebene und teilen Sie die einzelnen Featureobjekte in separate Zeilen auf. Der folgende Befehl verwendet beispielsweise das jq
-Befehlszeilentool, um eine GeoJSON-Datei in ein durch Zeilenumbruch getrenntes Format aufzuteilen:
cat ~/file1.json | jq -c '.features[]' > converted.json
Externe Tabelle aus einer durch Zeilenumbruch getrennten GeoJSON-Datei erstellen
Sie können eine in Cloud Storage gespeicherte GeoJSON-Datei mit Zeilenumbrüchen abfragen, indem Sie eine externe Tabelle erstellen. Verwenden Sie zum Erstellen der externen Tabelle die DDL-Anweisung CREATE EXTERNAL TABLE
. Setzen Sie in der OPTIONS
-Klausel die Option format
auf NEWLINE_DELIMITED_JSON
und die Option json_extension
auf GEOJSON
.
Beispiel:
CREATE EXTERNAL TABLE mydataset.table1 OPTIONS (
format="NEWLINE_DELIMITED_JSON",
json_extension = 'GEOJSON',
uris = ['gs://mybucket/geofile.json']
);
GeoJSON-Geometriedaten laden
Raumbezogene Analysen unterstützen das Laden einzelner GeoJSON-Geometrieobjekte, die als Textstrings in andere Dateitypen eingebettet sind. Sie können beispielsweise eine CSV-Datei laden, in der eine der Spalten ein GeoJSON-Geometrieobjekt enthält.
Wenn Sie diese Art von GeoJSON-Daten in BigQuery laden möchten, stellen Sie ein Schema bereit, das eine Spalte GEOGRAPHY
für die GeoJSON-Daten angibt. Sie müssen das Schema manuell angeben. Wenn andererseits die automatische Erkennung aktiviert ist, lädt BigQuery die Daten als STRING
-Wert.
Geospatiale Analysen unterstützen nicht das Laden von GeoJSON-Funktionsobjekten oder Funktionssammlungen. Wenn Sie Funktionsobjekte laden müssen, sollten Sie durch Zeilenumbruch getrennte GeoJSON-Dateien verwenden.
Sie können GeoJSON-Daten in eine vorhandene BigQuery-Tabelle mit der Spalte GEOGRAPHY
streamen, indem Sie Daten als String in der API-Anfrage serialisieren.
bq
Führen Sie den Befehl insert
des bq-Befehlszeilentools aus:
echo '{"geo": "{\"type\": \"LineString\", \"coordinates\": [[-118.4085, 33.9416], [-73.7781, 40.6413]]}"}' \
| bq insert my_dataset.geo_table
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Sie können ein GeoJSON-Geometrieobjekt mithilfe der Funktion ST_GEOGFROMGEOJSON
in einen GEOGRAPHY
-Wert konvertieren. Sie können die Geometrien beispielsweise als STRING
-Werte speichern und dann eine Abfrage ausführen, die ST_GEOGFROMGEOJSON
aufruft.
GeoParquet-Dateien laden
GeoParquet ist eine Spezifikation, die dem Parquet-Dateiformat raumbezogene Typen hinzufügt. GeoParquet enthält Metadaten, die den enthaltenen georäumlichen Daten eine eindeutige Semantik verleihen und Interpretationsprobleme vermeiden, die bei anderen Formaten für georäumliche Daten auftreten.
Beim Laden von Parquet-Dateien prüft BigQuery, ob GeoParquet-Metadaten vorhanden sind. Wenn GeoParquet-Metadaten vorhanden sind, werden in BigQuery standardmäßig alle darin beschriebenen Spalten in eine entsprechende GEOGRAPHY
-Spalte geladen.
Weitere Informationen zum Laden von Parquet-Dateien finden Sie unter Parquet-Daten laden.
Externe Tabelle aus GeoParquet-Daten erstellen
In externen Tabellen, die auf GeoParquet-Dateien verweisen, werden relevante Spalten dem Typ GEOGRAPHY
zugeordnet.
Statistiken, die in der GeoParquet-Datei verfügbar sind (bbox
, covering
), werden nicht verwendet, um Abfragen über eine externe Tabelle zu beschleunigen.
Koordinatensysteme und Kanten
Bei raumbezogenen Analysen stellen Punkte Positionen auf der Oberfläche eines WGS84-Sphäroids, ausgedrückt als Längengrad plus geodätischer Breitengrad, dar. Eine Kante ist ein sphärisches geodätisches Objekt zwischen zwei Endpunkten. Das heißt, Kanten sind der kürzeste Pfad auf der Oberfläche einer Sphäre.
Das WKT-Format bietet kein Koordinatensystem. Beim Laden von WKT-Daten wird bei raumbezogenen Analysen davon ausgegangen, dass die Daten WGS84-Koordinaten mit sphärischen Kanten verwenden. Achten Sie darauf, dass Ihre Quelldaten mit dem Koordinatensystem übereinstimmen, es sei denn, die Geografien sind klein genug, dass der Unterschied zwischen sphärischen und planaren Kanten ignoriert werden kann.
GeoJSON nutzt explizit WGS84-Koordinaten mit planaren Kanten. Beim Laden von GeoJSON-Daten werden raumbezogene Analysen planare Kanten in sphärische Kanten umgewandelt. Raumbezogene Analysen fügen der Linie bei Bedarf zusätzliche Punkte hinzu, sodass die konvertierte Kantenfolge innerhalb von zehn Metern der ursprünglichen Linie verbleibt. Dieser Vorgang wird als Tesselierung oder als ungleichmäßige Verdichtung bezeichnet. Sie können den Tesselierungsvorgang nicht direkt steuern.
Verwenden Sie WKT, um Standorte mit sphärischen Kanten zu laden. Für das Laden von Regionen mit planaren Kanten, die häufig als Geometrien bezeichnet werden, ist es am einfachsten, GeoJSON zu verwenden. Wenn Ihre Geometriedaten jedoch bereits im WKT-Format vorliegen, besteht eine weitere Möglichkeit darin, die Daten als STRING
-Typ zu laden und dann die Funktion ST_GEOGFROMTEXT
zur Konvertierung in GEOGRAPHY
-Werte zu verwenden. Setzen Sie den Parameter planar
auf TRUE
, um die Daten als planar zu interpretieren.
GeoParquet-Dateien enthalten Metadaten zum Koordinatensystem und zu den Kanten, die zum Erstellen der Daten verwendet wurden. Beim Lesen von GeoParquet-Dateien mit ebenen Kanten werden diese bei raumbezogenen Analysen in sphärische Kanten umgewandelt. GeoParquet-Dateien mit anderen Koordinatensystemen als WGS84 werden abgelehnt.
Achten Sie bei der Auswahl eines Austauschformats darauf, das von Ihren Quelldaten verwendete Koordinatensystem zu verstehen. Die meisten Systeme unterstützen explizit das Parsen von Geografie (statt der Geometrie) von WKT oder sie gehen von planaren Kanten aus.
In den Koordinaten sollte als Erstes der Längengrad und als Zweites der Breitengrad in Sekunden angegeben sein. Bei langen Segmenten oder Kanten in der Geografie ist eine Tesselierung erforderlich, da raumbezogene Analysen sie als sphärische geodätische Objekte interpretieren, die möglicherweise nicht mit dem Koordinatensystem übereinstimmen, aus dem die Daten stammen.
Polygonausrichtung
Auf einer Kugel hat jedes Polygon ein komplementäres Polygon. Zu einem Polygon, mit dem die Kontinente der Erde beschrieben werden, gehört beispielsweise ein komplementäres Polygon, das die Ozeane der Erde beschreibt. Da die beiden Polygone durch dieselben Begrenzungsringe beschrieben werden, sind Regeln erforderlich, um zu klären, welches der beiden Polygone durch einen bestimmten WKT-String beschrieben wird.
Wenn Sie WKT- und WKB-Strings aus Dateien laden oder per Streaming übernehmen, gehen raumbezogene Analysen davon aus, dass die Polygone in der Eingabe in folgender Weise ausgerichtet sind: Wenn Sie der Begrenzung des Polygons in der Reihenfolge der Eingabescheitelpunkte folgen, liegt das Innere des Polygons auf der linken Seite. Raumbezogene Analysen wenden beim Exportieren von Geografieobjekten in WKT- und WKB-Strings die gleiche Regel an.
Wenn Sie die Funktion ST_GeogFromText
zum Konvertieren eines WKT-Strings in einen GEOGRAPHY
-Wert verwenden, gibt der Parameter oriented
an, wie die Funktion das Polygon bestimmt:
FALSE
: Interpretieren der Eingabe als Polygon mit der kleineren Fläche. Dies ist das Standardverhalten.TRUE
: Verwenden Sie die oben beschriebene Ausrichtungsregel links. Mit dieser Option können Sie Polygone laden, deren Fläche größer als eine Halbkugel ist.
Da GeoJSON-Strings auf einer planaren Karte definiert sind, kann die Ausrichtung eindeutig bestimmt werden, auch wenn die Eingabe nicht der in der GeoJSON-Formatspezifikation definierten Ausrichtungsregel RFC 7946 entspricht.
Umgang mit falsch formatierten raumbezogenen Daten
Wenn Sie raumbezogene Daten aus anderen Tools in BigQuery laden, können aufgrund von ungültigen WKT- oder GeoJSON-Daten Conversion-Fehler auftreten. Eine Fehlermeldung wie Edge K has duplicate vertex with edge N
weist zum Beispiel darauf hin, dass das Polygon doppelte Scheitelpunkte (neben dem ersten und letzten) enthält.
Zur Vermeidung von Formatierungsproblemen lassen sich mit einer Funktion standardkonforme Ausgaben generieren. Wenn Sie beispielsweise Daten aus PostGIS exportieren, können Sie mit der PostGIS-Funktion ST_MakeValid
die Ausgabe standardisieren.
Alternativ können Sie die Daten als Text importieren und dann durch Aufrufen von ST_GEOGFROMTEXT
oder ST_GEOGFROMGEOJSON
mit dem Parameter make_valid
konvertieren. Wenn make_valid
TRUE
ist, versucht diese Funktionen, ungültige Polygone zu reparieren.
Zum Ermitteln oder Ignorieren falsch formatierter Daten haben Sie die Möglichkeit, problematische Daten mit dem Funktionspräfix SAFE
auszugeben. Die folgende Abfrage verwendet beispielsweise das Präfix SAFE
zum Abrufen fehlerhaft formatierter räumlicher Daten.
SELECT geojson AS bad_geojson FROM mytable WHERE geojson IS NOT NULL AND SAFE.ST_GeogFromGeoJson(geojson) IS NULL
Einschränkungen
Raumbezogene Analysen unterstützen die folgenden Funktionen in raumbezogenen Formaten nicht:
- Dreidimensionale Geometrien. Dazu gehören das Suffix „Z“ im WKT-Format und die Höhenkoordinaten im GeoJSON-Format.
- Lineare Referenzsysteme. Dazu gehört auch das Suffix „M“ im WKT-Format.
- WKT-Geometrieobjekte außer den Geometrie-Primitiven und mehrteiligen Geometrien. Insbesondere unterstützen raumbezogene Analysen nur Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon und GeometryCollection.
Weitere Informationen zu spezifischen Einschränkungen für GeoJson- und WKT-Eingabeformate finden Sie unter ST_GeogFromGeoJson
und ST_GeogFromText
.
Raumbezogene Google Earth Engine-Daten laden
Google Earth Engine ist eine raumbezogene Datenplattform, die mithilfe von Rasterdaten Informationen aus Satelliten- und Erdbeobachtungsbildern kompiliert und analysiert. Dabei sind die Daten über ein Raster von Zellen organisiert, die Informationen zu digitalen Bildern darstellen. Während BigQuery hauptsächlich mit tabellarischen Vektordaten arbeitet, können Nutzer ihre BigQuery-Daten zusammen mit Rasterdaten aus Earth Engine verwenden, um sowohl Vektor- als auch Raster-Datasets in ihre Workflows zu integrieren.
Informationen zum Exportieren von Earth Engine-Daten nach BigQuery finden Sie unter Nach BigQuery exportieren.
Raumbezogene Daten umwandeln
Wenn Ihre Tabelle eigene Spalten für Längen- und Breitengrad enthält, können Sie die Werte in geografische Werte umwandeln, indem Sie GoogleSQL-Geografiefunktionen wie ST_GeogPoint
verwenden.
Wenn Sie beispielsweise zwei DOUBLE
-Spalten für Längen- und Breitengrad haben, können Sie mithilfe der folgenden Abfrage eine Standortspalte erstellen.
SELECT *, ST_GeogPoint(longitude, latitude) AS g FROM mytable
BigQuery kann WKT- und GeoJSON-Strings in geografische Typen umwandeln.
Wenn Ihre Daten in einem anderen Format wie Shapefiles vorliegen, verwenden Sie ein externes Tool, um die Daten in ein unterstütztes Dateiformat zu konvertieren, etwa eine CSV-Datei. Dabei müssen GEOGRAPHY
-Spalten als WKT- oder GeoJSON-Strings codiert sein.
Raumbezogene Daten partitionieren und gruppieren
Tabellen, die GEOGRAPHY
-Spalten enthalten, können partitioniert und gruppiert werden. Sie haben auch die Möglichkeit, eine GEOGRAPHY
-Spalte als Clustering-Spalte zu verwenden. Eine GEOGRAPHY
-Spalte kann jedoch nicht als Partitionierungsspalte genutzt werden.
Wenn Sie GEOGRAPHY
-Daten in einer Tabelle speichern und Ihre Abfragen Daten mithilfe eines räumlichen Prädikats filtern, müssen Sie darauf achten, dass die Tabelle nach der Spalte GEOGRAPHY
gruppiert ist.
Dies verbessert in der Regel die Abfrageleistung und senkt gegebenenfalls auch die Kosten. Ein räumliches Prädikat ruft eine boolesche geografische Funktion mit einer Spalte vom Typ GEOGRAPHY
als Argument auf. Im folgenden Beispiel wird ein räumliches Prädikat verwendet, das die Funktion ST_DWithin
nutzt:
WHERE ST_DWithin(geo, ST_GeogPoint(longitude, latitude), 100)
JOINs mit räumlichen Daten verwenden
Räumliche JOINs sind Joins zweier Tabellen mit einer geografischen Prädikatsfunktion in der WHERE
-Klausel. Beispiel:
-- how many stations within 1 mile range of each zip code? SELECT zip_code AS zip, ANY_VALUE(zip_code_geom) AS polygon, COUNT(*) AS bike_stations FROM `bigquery-public-data.new_york.citibike_stations` AS bike_stations, `bigquery-public-data.geo_us_boundaries.zip_codes` AS zip_codes WHERE ST_DWithin( zip_codes.zip_code_geom, ST_GeogPoint(bike_stations.longitude, bike_stations.latitude), 1609.34) GROUP BY zip ORDER BY bike_stations DESC
Räumliche Joins lassen sich mit festen geografischen Daten besser ausführen. Im obigen Beispiel ergeben sich die geografischen Werte aus der Abfrage. Der Join ist aber leistungsfähiger, wenn die geografischen Werte in einer BigQuery-Tabelle gespeichert sind.
Die folgende Abfrage ruft beispielsweise die Längengrad/Breitengrad-Paare ab und konvertiert sie in geografische Punkte. Wenn Sie diese Abfrage ausführen, geben Sie eine neue Zieltabelle zum Speichern der Abfrageergebnisse an.
SELECT *, ST_GeogPoint(pLongitude, pLatitude) AS p FROM mytable
BigQuery implementiert optimierte räumliche JOINs für INNER JOIN- und CROSS JOIN-Operatoren mit den folgenden GoogleSQL-Prädikatsfunktionen:
Räumliche Joins sind nicht optimiert:
- Für LEFT, RIGHT oder FULL OUTER Joins
- Wenn ANTI Joins verwendet werden
- Wenn das räumliche Prädikat negiert wird
Ein JOIN, der das Prädikat ST_DWithin
verwendet, wird nur optimiert, wenn der Entfernungsparameter ein konstanter Ausdruck ist.
Räumliche Daten exportieren
Wenn Sie räumliche Daten aus BigQuery exportieren, werden die Werte von GEOGRAPHY
-Spalten immer als WKT-Strings formatiert. Für den Export von Daten im GeoJSON-Format verwenden Sie die Funktion ST_AsGeoJSON
.
Wenn die Tools, mit denen Sie die exportierten Daten analysieren, den Datentyp GEOGRAPHY
nicht unterstützen, können Sie die Spaltenwerte mit einer geografischen Funktion wie ST_AsText
oder ST_AsGeoJSON
in Strings konvertieren.
Raumbezogene Analysen fügen der Linie bei Bedarf zusätzliche Punkte hinzu, sodass die konvertierte Kantenfolge innerhalb von zehn Metern der ursprünglichen geodätischen Linie verbleibt.
Bei der folgenden Abfrage wird beispielsweise ST_AsGeoJSON
zur Konvertierung von GeoJSON-Werten in Strings verwendet:
SELECT ST_AsGeoJSON(ST_MakeLine(ST_GeogPoint(1,1), ST_GeogPoint(3,2)))
Die sich daraus ergebenden Daten sollten in etwa so aussehen:
{ "type": "LineString", "coordinates": [ [1, 1], [1.99977145571783, 1.50022838764041], [2.49981908082299, 1.75018082434274], [3, 2] ] }
Die GeoJSON-Linie hat zwei zusätzliche Punkte. Diese Punkte werden von den raumbezogenen Analysen hinzugefügt, damit die GeoJSON-Linie exakt dem Pfad der ursprünglichen Linie entspricht.
Nächste Schritte
- Informationen zum Einstieg in raumbezogene Analysen finden Sie unter Erste Schritte mit raumbezogenen Analysen für Datenanalysten.
- Weitere Informationen zu Visualisierungsoptionen für raumbezogene Analysen finden Sie unter Raumbezogene Daten visualisieren.
- Mehr über Funktionen von GoogleSQL in raumbezogenen Analysen finden Sie unter Geografische Funktionen in GoogleSQL.