-
-
Notifications
You must be signed in to change notification settings - Fork 16
SQL Query Examples
The plugin uses the positional order of the columns in your query. Any additional columns after the ones it interprets will be ignored. The columns can be named however you like.
Optional. You can set the Source to "none" if you just need to render a map without any data.
-
Basic query
The query must have at least four columns - the first two must be
latitude
andlongitude
values, and the third and fourth columns are thename
andid
for the pin. Theid
may be any data type that can be converted to a string, and for best results should be unique within the dataset.Applicable to all visualisations EXCEPT for Heatmap.
SELECT lat, lng, name, id FROM mydata;
-
Add some popup info (HTML content allowed) when the user clicks a point
SELECT lat, lng, name, id, info FROM mydata;
SECURITY WARNING: the
info
column (column #5), if supplied, is used to supply raw HTML to render within the info window shown when a marker is clicked. If this is supplied with data entered by an end user, this may represent a XSS attack vulnerability; therefore any such data must be sanitised before allowing it to be loaded into the map.
-
Show each point with a selected icon
SELECT lat, lng, name, id, info, icon FROM mydata;
-
Labels
A 1-character label on each pin.
SELECT lat, lng, name, id, info, '' as icon, lbl as label FROM mydata;
-
Flex fields - up to 10 extra data fields
SELECT lat, lng, name, id, '' AS info, '' AS icon, '' AS label col1, col2, ... col10 FROM mydata;
Note: The extra fields are available from Dynamic Actions via
this.data.attr01
,this.data.attr02
, etc.By default, any special characters (such as < and >) will be escaped prior to loading into the map. If your application requires the original data to be preserved, set the plugin attribute Escape special characters to No.
-
Heatmap
This query structure is required if you use Visualisation Heatmap.
SELECT lat, lng, weight FROM mydata;
-
Get only the data within a certain distance from a chosen point
select t.lat as lat ,t.lng as lng ,t.name ,t.id as id ,t.info from mytable t where t.lat is not null and t.lng is not null and (:p1_latlng is null or :p1_radius is null or sdo_geom.sdo_distance (geom1 => sdo_geometry (sdo_gtype => 2001 /* 2-dimensional point */ ,sdo_srid => 8307 /* Longitude / Latitude (WGS 84) */ ,sdo_point => sdo_point_type(t.lng, t.lat, null) ,sdo_elem_info => null ,sdo_ordinates => null) ,geom2 => sdo_geometry (sdo_gtype => 2001 /* 2-dimensional point */ ,sdo_srid => 8307 /* Longitude / Latitude (WGS 84) */ ,sdo_point => sdo_point_type (to_number(substr(:p1_latlng,instr(:p1_latlng,',')+1)) ,to_number(substr(:p1_latlng,1,instr(:p1_latlng,',')-1)), null) ,sdo_elem_info => null ,sdo_ordinates => null) ,tol => 0.0001 /*metres*/ ,unit => 'unit=KM') < :p1_radius)
-
geoJson
Planned for v1.3
This query structure is required if you use Visualisation geoJson.
Features may be loaded via a SQL query that returns them in geoJson format.
The query may simply return a VARCHAR2 or CLOB column containing one or more geoJson documents:
select geojson from mytable
Additional fields may optionally be used to add the
name
,id
properties, and up to 10 flex fields:select geojson ,name ,id ,col1, col2, ... col10 from mytable
This example uses a data source that only provides the geometry for the features; the query wraps the geometry data with a geoJson document:
select json_object( 'type' is 'Feature', 'geometry' is c.geometry returning clob ) as geojson ,country as name from country_borders where geometry is not null
This example embeds properties in the geoJson document; this is preferred because any arbitrary properties may be added without using "flex" fields:
select json_object( 'type' is 'Feature', 'geometry' is c.geometry, 'properties' is json_object( 'id' is c.id, 'name' is c.country, 'population' is c.pop ) returning clob ) as geojson from country_borders c where c.geometry is not null