Wiki source code of Spatial Extensions
Show last authors
1 | BETA VERSION |
2 | @since 3.0 |
3 | |
4 | Spatial Extensions are composed of several concepts: |
5 | |
6 | * a spatially enabled database, such as Oracle Spatial, MySQL, Postgis or Microsoft SQL Server 2008. |
7 | * a specific property type to store / read geometries, such as POINT, LINE, ... |
8 | * hibernate extensions to query data based on spatial attributes |
9 | * built in services to integrate with 3rd party providers such as Google Maps or ViaMichelin for maps or geocoding |
10 | * widgetry to show maps and position objects on maps |
11 | |
12 | = Spatial Database = |
13 | |
14 | A spatial enabled database has the following capabilities: |
15 | |
16 | - Store a Geometry (POINT, ...) as a column in a table using a mapping coordinate system. |
17 | - Query on that column using spatial functions |
18 | - Optionally, index those spatial data for fast retrieval. |
19 | |
20 | Spatially enabled database are: |
21 | |
22 | * Oracle 11g Standard and Enterprise Edition |
23 | * MySQL 5.1 and above (indexing not supported as of 5.5) |
24 | * Postgres with the GIS Extension (PostGis) |
25 | * Microsoft SQL Server 2008 |
26 | |
27 | Other databases or version do not have spatial support. |
28 | |
29 | |
30 | = Enabling the spatial components in Requea = |
31 | |
32 | By default, the spatial components are not enabled. You must specify that you want spatial functionalities in the requeadb.xml: |
33 | |
34 | {{code language="xml"}} |
35 | <?xml version="1.0" encoding="UTF-8"?> |
36 | <config> |
37 | <DbType>oracle11g</DbType> |
38 | **~ <DbSpatial>true</DbSpatial>** |
39 | <DbDriver>oracle.jdbc.OracleDriver</DbDriver> |
40 | <DbURL>jdbc:oracle:thin:@rhel6ws.requea.com:1522:ORCL</DbURL> |
41 | <DbUser>requea</DbUser> |
42 | <DbPassword>xxxx</DbPassword> |
43 | </config> |
44 | {{/code}} |
45 | |
46 | |
47 | |
48 | = Storing spatial information = |
49 | |
50 | Spatial information (Geometries) are stored as special columns in the Dataabase. |
51 | In Requea, you should use the type "Geometry" in the Entity Property definition: |
52 | |
53 | [[image:ScreenShot2011-10-13at3.50.13PM.png]] |
54 | |
55 | |
56 | = Querying on spatial using HQL = |
57 | |
58 | The following functions can be used in HQL query (in combination with non spatial criteria): |
59 | |
60 | * dimension |
61 | * geometrytype |
62 | * srid |
63 | * envelope |
64 | * astext |
65 | * asbinary |
66 | * isempty |
67 | * issimple |
68 | * boundary |
69 | * overlaps |
70 | * intersects |
71 | * contains |
72 | * crosses |
73 | * disjoint |
74 | * equals |
75 | * touches |
76 | * within |
77 | * relate |
78 | * distance |
79 | * buffer |
80 | * convexhull |
81 | * difference |
82 | * intersection |
83 | * symdifference |
84 | * geomunion |
85 | |
86 | * extent (oracle) |
87 | * transform (oracle) |
88 | |
89 | Oracle specific functions: |
90 | |
91 | * centroid |
92 | * concat_lines |
93 | * aggr_convexhull |
94 | * aggr_union |
95 | * lrs_concat |
96 | |
97 | = Geo Services = |
98 | |
99 | There are 3 built in services that are available for spatial operations, in addition to storing and querying information: |
100 | |
101 | * Geocoding provides a WSG84 coordinate (Latitude, Longitude) based on the postal address. |
102 | * Mapping provides Maps to show the position of a point, line, ... on the map. |
103 | * Linking provides a URL to invoke the web site of a mapping provider to show one point on a map |
104 | |
105 | == GeoSpatial Providers == |
106 | |
107 | - GoogleMaps: |
108 | |
109 | * GeoCoding: Yes, subject to licence agreements. Should not be used on an Intranet or Extranet |
110 | * Mapping: Yes, subject to licence agreements. Should not be used on an Intranet or Extranet |
111 | * Linking: Yes |
112 | |
113 | - GoogleMaps Premier: |
114 | |
115 | * GeoCoding: Yes |
116 | * Mapping: Yes |
117 | * Linking: Yes |
118 | |
119 | - ViaMichelin: |
120 | |
121 | * GeoCoding: Yes |
122 | * Mapping: Yes |
123 | * Linking: Yes |
124 | |
125 | - CloudMade: |
126 | |
127 | * GeoCoding: No / Poor |
128 | * Mapping: Yes |
129 | * Linking: Yes |
130 | |
131 | NOTE that Services are subject to Usage condition. Please refer to their website. |
132 | |
133 | == Setup of GeoServices == |
134 | |
135 | ViaMichelin and GoogleMaps services have their own bundles. Those bundles are packages as product. |
136 | You must add the product in your configuration. |
137 | |
138 | Please note that the version of the platform should the same as the version of the GeoSpatial Extensions. |
139 | |
140 | |
141 | [[image:img39.png||alt="Product configuration / GeoSpatial"]]. |
142 | |
143 | * Geocoding: |
144 | |
145 | The ViaMichelin GeoCoder is a SOAP API call and requires viamichelin credentials: |
146 | |
147 | [[image:img42.png]] |
148 | |
149 | * GeoMapping |
150 | |
151 | The ViaMichelin GeoMapping service requires the JavaScript Key (see image above). |
152 | |
153 | Note that the API key MUST be setup with your website URL (localhost for a test system, ...). |
154 | |
155 | |
156 | == Using Geocoding == |
157 | |
158 | The Geocoding is a classical JavaScript service: |
159 | |
160 | {{code language="javascript"}} |
161 | var res = Geocoder.geocodeAddress(street,null,data.rqCommune.rqNomInsee,null,"FRA"); |
162 | if(res != null) { |
163 | data.rqGeoLoc = res.Location; |
164 | } |
165 | {{/code}} |
166 | |
167 | The returned object is a Location object that contains the following properties: |
168 | |
169 | * City |
170 | * StreetNumber |
171 | * StreetLabel |
172 | * ZipCode |
173 | * State |
174 | * Country |
175 | * Location as a POINT (lat, long) |
176 | |
177 | == Using Geomapping == |
178 | |
179 | |
180 | You must setup the Mapper you want to use in the com.requea.dynapage.geospatial.geomap system parameter: |
181 | |
182 | |
183 | [[image:img43.png||alt="GeoMapping setup"]] |
184 | |
185 | |
186 | When the mapping service is defined, Geolocated POINTS will be rendered as a map: |
187 | |
188 | |
189 | [[image:img44.png||alt="Geo Map"]] |