Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • M mapnik3
  • Project information
    • Project information
    • Activity
    • Members
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
Collapse sidebar
  • 周峰
  • mapnik3
  • Wiki
  • OCCI

OCCI · Changes

Page history
clone mapnik wiki from github. authored May 14, 2021 by 周峰's avatar 周峰
Hide whitespace changes
Inline Side-by-side
OCCI.md 0 → 100644
View page @ 8516de00
<!-- Name: OCCI -->
<!-- Version: 10 -->
<!-- Last-Modified: 2010/11/22 03:02:02 -->
<!-- Author: kunitoki -->
Mapnik's PluginArchitecture supports the use of different input formats.
One such plugin supports the Oracle Spatial ([Oracle Spatial](http://en.wikipedia.org/wiki/Oracle_Spatial)) extension to the popular ORACLE database.
*At the current time, only oracle version 10.2.0.x (10g) and 11.2.0.x (11g) are supported*
## Installation (On Linux)
Install the [Oracle Instant Client](http://www.oracle.com/technology/software/tech/oci/instantclient/index.html) package on your system.
Make sure you define where the includes and library files resides in _config.py_:
OCCI_INCLUDES='/usr/lib/oracle/11.2.0.2/client/include'
OCCI_LIBS='/usr/lib/oracle/11.2.0.2/client/lib'
Make sure that running _python scons/scons.py DEBUG=y_ shows the following line
Checking for C++ library ociei... yes
To check if the occi plugin built and was installed correctly, try the usual Python _from mapnik import *_ on a DEBUG=y build, and look for the following debug line
registered datasource : occi
## Troubleshooting
### double free or corruption error (oracle 10g only)
If you have problems when running the oracle input plugin and get this when accessing geometries:
*** glibc detected *** double free or corruption (!prev): 0x08c52568 ***
go to http://www.oracle.com/technology/tech/oci/occi/occidownloads.html and download the package 10.2.0.3.0 and overwrite the libraries in your oracle instantclient install path.
Look [here](http://bugs.gentoo.org/show_bug.cgi?id=257431) for references on the problem.
### libtool error: libstdc++.so.5
libtool error: libstdc++.so.5: cannot open shared object file: No such file or directory
Make sure you have compat-libstdc++-33 installed.
## Parameters
| *parameter* | *value* | *description* | *default* |
|:------------------|----------|---------------|----------:|
| host | string | name of the oracle host | |
| user | string | username to use for connecting | |
| password | string | user password to use for connecting | |
| table | string | name of the table to fetch, this can be a sub-query | |
| geometry_field | string | name of the geometry field, in case you have more than one in a single table | GEOLOC |
| extent | string | maxextent of the geometries | determined by querying the oracle metadata for the table |
| row_limit | integer | max number of rows to return when querying data, 0 means no limit | 0 |
| row_prefetch | integer | number of rows to prefetch from the query before converting them to mapnik features (this allows to finetune the balance between transfer time and conversion time) | 1000 |
| initial_size | integer | initial size of the stateless connection pool | 1 |
| max_size | integer | max size of the stateless connection pool | 10 |
| use_spatial_index | boolean | choose wheter to use the oracle spatial index when fetching data | true |
| multiple_geometries | boolean | wheter to use multiple different objects or a single one when dealing with multi-objects (this is mainly related to how the label are used in the map, one label for a multi-polygon or one label for each polygon of a multi-polygon)| false |
| encoding | string | internal file encoding | utf-8 |
## Usage
### Python
Instantiate a datasource like:
```python
lyr = Layer('Geometry from Oracle Spatial')
lyr.datasource = OCCI(host='localhost',user='scott',password='tiger',table='worldborders',geometry_field='geom')
```
### XML
If you are using XML mapfiles to style your data, then using a Oracle datasource looks like:
```xml
<Layer name="countries" status="on" srs="+proj=latlong +datum=WGS84">
<StyleName>countries_style_label</StyleName>
<Datasource>
<Parameter name="type">occi</Parameter>
<Parameter name="host">localhost</Parameter>
<Parameter name="user">scott</Parameter>
<Parameter name="password">tiger</Parameter>
<Parameter name="table">worldborders</Parameter>
<Parameter name="geometry_field">geom</Parameter>
<Parameter name="extent">-180,-90,180,89.99</Parameter>
</Datasource>
</Layer>
```
### C++
Plugin datasource initialization example code can be found on PluginArchitecture.
A OCCI datasource may be created as follows:
```cpp
{
parameters p;
p["type"]="occi";
p["host"]=oracle_server_hostname;
p["user"]=oracle_server_username;
p["password"]=oracle_server_password;
p["table"]="worldborders";
p["geometry_field"]="geom";
p["extent"]="2309554.99818767,5024797.73763923,2318414.90507308,5040447.94690007"; // optional
Layer lyr("World Borders");
lyr.set_datasource(datasource_cache::instance()->create(p));
lyr.add_style("worldborders");
m.addLayer(lyr);
}
```
\ No newline at end of file
Clone repository
  • A perfect testcase
  • API changes between v2.0 and v2.1
  • API changes between v3.0 and v3.1
  • AWS Lambda
  • About Mapnik
  • AlsoFilter
  • Api changes between v2.1 and v2.2
  • Api changes between v2.2 and v2.3
  • Api changes between v2.3 and v3.0
  • ArchInstallation
  • Aspect Fix Mode
  • Benchmark Notes
  • BoundsClipping
  • BrokenExceptions
  • BuildingSymbolizer
View All Pages