Insert WKT data

Streaming insert into GEOGRAPHY column with WKT data.

Explore further

For detailed documentation that includes this code sample, see the following:

Code sample

Python

Before trying this sample, follow the Python setup instructions in the BigQuery quickstart using client libraries . For more information, see the BigQuery Python API reference documentation .

To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  from 
  
 google.cloud 
  
 import 
  bigquery 
 
 import 
  
 shapely.geometry 
 import 
  
 shapely.wkt 
 bigquery_client 
 = 
  bigquery 
 
 . 
  Client 
 
 () 
 # This example uses a table containing a column named "geo" with the 
 # GEOGRAPHY data type. 
 table_id 
 = 
 "my-project.my_dataset.my_table" 
 # Use the Shapely library to generate WKT of a line from LAX to 
 # JFK airports. Alternatively, you may define WKT data directly. 
 my_geography 
 = 
 shapely 
 . 
 geometry 
 . 
 LineString 
 ( 
 [( 
 - 
 118.4085 
 , 
 33.9416 
 ), 
 ( 
 - 
 73.7781 
 , 
 40.6413 
 )] 
 ) 
 rows 
 = 
 [ 
 # Convert data into a WKT string. 
 { 
 "geo" 
 : 
 shapely 
 . 
 wkt 
 . 
 dumps 
 ( 
 my_geography 
 )}, 
 ] 
 #  table already exists and has a column 
 # named "geo" with data type GEOGRAPHY. 
 errors 
 = 
 bigquery_client 
 . 
  insert_rows_json 
 
 ( 
 table_id 
 , 
 rows 
 ) 
 if 
 errors 
 : 
 raise 
 RuntimeError 
 ( 
 f 
 "row insert failed: 
 { 
 errors 
 } 
 " 
 ) 
 else 
 : 
 print 
 ( 
 f 
 "wrote 1 row to 
 { 
 table_id 
 } 
 " 
 ) 
 

Ruby

Before trying this sample, follow the Ruby setup instructions in the BigQuery quickstart using client libraries . For more information, see the BigQuery Ruby API reference documentation .

To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  require 
  
 "google/cloud/bigquery" 
 require 
  
 "rgeo" 
 def 
  
 insert_geography_wkt 
  
 dataset_id 
  
 = 
  
 "your_dataset_id" 
 , 
  
 table_id 
  
 = 
  
 "your_table_id" 
  
 bigquery 
  
 = 
  
 Google 
 :: 
 Cloud 
 :: 
  Bigquery 
 
 . 
  new 
 
  
 dataset 
  
 = 
  
 bigquery 
 . 
 dataset 
  
 dataset_id 
  
 table 
  
 = 
  
 dataset 
 . 
 table 
  
 table_id 
  
 # Use the RGeo library to generate WKT of a line from LAX to 
  
 # JFK airports. Alternatively, you may define WKT data directly. 
  
 factory 
  
 = 
  
 RGeo 
 :: 
 Geographic 
 . 
 spherical_factory 
  
 my_line 
  
 = 
  
 factory 
 . 
 line_string 
 ( 
 [ 
 factory 
 . 
 point 
 ( 
 - 
 118 
 . 
 4085 
 , 
  
 33 
 . 
 9416 
 ), 
  
 factory 
 . 
 point 
 ( 
 - 
 73 
 . 
 7781 
 , 
  
 40 
 . 
 6413 
 ) 
 ] 
 ) 
  
 row_data 
  
 = 
  
 [ 
  
 # Convert data into a WKT string: "LINESTRING (-118.4085 33.9416, -73.7781 40.6413)" 
  
 { 
  
 geo 
 : 
  
 my_line 
 . 
 as_text 
  
 } 
  
 ] 
  
 # Table already exists and has a column named "geo" with data type GEOGRAPHY. 
  
 response 
  
 = 
  
 table 
 . 
 insert 
  
 row_data 
  
 if 
  
 response 
 . 
 success? 
  
 puts 
  
 "Inserted GEOGRAPHY WKT row successfully" 
  
 else 
  
 puts 
  
 "GEOGRAPHY WKT row insert failed: 
 #{ 
 response 
 . 
 error_rows 
 . 
  first 
 
& . 
 errors 
 } 
 " 
  
 end 
 end 
 

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser .

Design a Mobile Site
View Site in Mobile | Classic
Share by: