Commit graph

6761 commits

Author SHA1 Message Date
Rich Wareham
156a7590f4 python: a new plugin to use arbitrary Python as a data source
This plugin allows you to write data sources in the Python programming language.
This is useful if you want to rapidly prototype a plugin, perform some custom
manipulation on data or if you want to bind mapnik to a datasource which is most
conveniently accessed through Python.

The plugin may be used from the existing mapnik Python bindings or it can embed
the Python interpreter directly allowing it to be used from C++, XML or even
JavaScript.

Mapnik already has excellent Python bindings but they only directly support
calling *into* mapnik *from* Python. This forces mapnik and its input plugins to
be the lowest layer of the stack. The role of this plugin is to allow mapnik to
call *into* Python itself. This allows mapnik to sit as rendering middleware
between a custom Python frontend and a custom Python datasource. This increases
the utility of mapnik as a component in a larger system.

There already exists MemoryDatasource which can be used to dynamically create
geometry in Python. It suffers from the problem that it does not allow
generating only the geometry which is seen by a particular query. Similarly the
entire geometry must exist in memory before rendering can progress. By using a
custom iterator object or by using generator expressions this plugin allows
geometry to be created on demand and to be destroyed after use. This can have a
great impact on memory efficiency. Since geometry is generated on-demand as
rendering progresses there can be arbitrarily complex 'cleverness' optimising
the geometry generated for a particular query. Obvious examples of this would
be generating only geometry within the query bounding box and generating
geometry with an appropriate level of detail for the output resolution.
2012-07-31 17:05:27 +01:00
artemp
d7d833dd13 + cleanup/small fixes 2012-07-31 13:31:22 +01:00
artemp
c7af665cc7 + process SEG_CLOSE 2012-07-31 10:59:09 +01:00
artemp
76569cccb8 + select clipper based on geometry type
+ process SEG_CLOSE command
2012-07-31 10:57:42 +01:00
artemp
a3b7d07da0 + select clipper based on geometry type 2012-07-31 10:56:13 +01:00
Dane Springmeyer
39a1477eb2 allow marker-width and marker-height to apply directly to ellipse rx/ry - maintaining ability to precisely control ellipse dimensions, combine with transforms, and avoid scaling line-widths - refs #1348 and #1347 2012-07-30 23:20:20 -07:00
Dane Springmeyer
e69c6037b7 mapnik coding style 2012-07-30 23:07:12 -07:00
Dane Springmeyer
e482998c51 rename path_ptr to the more explicit svg_path_ptr and set up markers_symbolizer rendering for upcoming changed 2012-07-30 21:45:46 -07:00
Dane Springmeyer
0d97b851fa markers: support opacity on bitmaps, and move to supporting both opacity and fill-opacity 2012-07-30 18:31:21 -07:00
Dane Springmeyer
6f174287a2 amend 822531a which broke polygon geometry labeling - refs #1350 2012-07-30 18:29:26 -07:00
Dane Springmeyer
e6e7b4c700 svg2png: inflate the rendering canvas to avoid edge affect for 100% w/h svgs 2012-07-30 16:37:34 -07:00
Dane Springmeyer
1a6cbfb568 fix xml comment 2012-07-30 15:54:08 -07:00
Dane Springmeyer
ce7b6a93fb Add test case for #1354 2012-07-30 14:48:32 -07:00
artemp
b963b6c2b3 Merge remote-tracking branch 'origin' 2012-07-30 18:35:03 +01:00
artemp
822531a114 + filter on geometry type to use centroid (Polygon) or
middle_point (LineString) label placement
2012-07-30 18:32:42 +01:00
artemp
8931509adc + move middle_point into label namespace 2012-07-30 18:31:15 +01:00
Hermann Kraus
a41eafd8ee Add rotation tests. 2012-07-30 18:06:06 +02:00
Hermann Kraus
6b616ebecd Add rotation. 2012-07-30 18:03:42 +02:00
Hermann Kraus
435f716821 Reenable TextSymbolizer in Cairo renderer. 2012-07-30 02:59:06 +02:00
Hermann Kraus
a57123f8be Add collision detector support. 2012-07-30 02:17:43 +02:00
Hermann Kraus
00ae551564 Merge branch 'master' into harfbuzz 2012-07-30 01:26:31 +02:00
Hermann Kraus
5fedfc8a52 Fix problem with python tests. 2012-07-30 01:25:21 +02:00
Hermann Kraus
dbead9bc00 Partially revert b3c5969c3e.
The meaning of wrap-char is different from what I originally thought.
2012-07-30 01:24:31 +02:00
Hermann Kraus
d6c8fe37a9 Handle \n chars. 2012-07-30 01:23:04 +02:00
Hermann Kraus
66cbf45cd7 Rename symbols to match coding standards. 2012-07-29 18:10:41 +02:00
Hermann Kraus
b3c5969c3e Implement wrap_char. 2012-07-29 17:58:46 +02:00
Hermann Kraus
0f7f527af9 Fix typo. 2012-07-29 13:12:53 +02:00
Hermann Kraus
d3c473bbdc Calculate text position the same way as it was done in Mapnik 2.0. 2012-07-29 03:50:22 +02:00
Hermann Kraus
22aeba9bbd Temporary fix for deep copy problem introduced by aecd6820c2. 2012-07-29 02:41:09 +02:00
Hermann Kraus
2e3e76ebaa Merge branch 'master' into harfbuzz 2012-07-29 01:48:48 +02:00
Hermann Kraus
19ed8718a3 Fix test crashes when reference image doesn't exists.
Refs #1296 and commit 269569250c
2012-07-29 01:47:16 +02:00
Hermann Kraus
9cdb9a7bf3 Fix build errors introduced by 4e3e5cb0b0. 2012-07-29 01:31:10 +02:00
Hermann Kraus
3a16d2749a Correctly initialize placement_ member. 2012-07-29 01:28:19 +02:00
Hermann Kraus
4e3e5cb0b0 Merge branch 'master' into harfbuzz
Conflicts:
	bindings/python/mapnik_shield_symbolizer.cpp
	include/mapnik/agg_renderer.hpp
	include/mapnik/cairo_renderer.hpp
	src/build.py
2012-07-28 20:59:42 +02:00
Hermann Kraus
71247085d2 Correct size calculation. 2012-07-28 20:45:17 +02:00
Hermann Kraus
212760b507 Rename symbols to match coding standards. 2012-07-28 20:32:11 +02:00
Hermann Kraus
981c11c563 Implement find_point_placement(). 2012-07-28 20:31:02 +02:00
Dane Springmeyer
81937f7317 only allow restyling of svg paths that already have visible display of stroke/fill 2012-07-28 09:27:37 -07:00
Hermann Kraus
a953d535ad Use pixel_position consistently everywhere. 2012-07-28 16:34:44 +02:00
Dane Springmeyer
e213f49d7c re-implement conditional stroke application in markers_symbolizer initially added in 9d756165e0, amended in 9f064960e3, and wrongly disabled in bd74d18f6d 2012-07-27 19:21:46 -07:00
Hermann Kraus
6b3810c9b0 Add init_alignment() function. 2012-07-28 02:04:01 +02:00
Hermann Kraus
716dd1c79e Move next_position() to placement finder. 2012-07-28 01:43:11 +02:00
Dane Springmeyer
4340e9a605 scons: fixup LIBDIR value settings - closes #1349 2012-07-27 10:56:24 -07:00
Hermann Kraus
f6ad3243ef Improve line breaking.
Change placement finder API.
2012-07-26 23:44:04 +02:00
artemp
03422de504 + close polygons (SEG_CLOSE) 2012-07-26 15:51:10 +01:00
artemp
fe4cfea536 + add call to close_path() if SEG_CLOSE 2012-07-26 15:49:58 +01:00
artemp
1b805abc23 + add close(x,y) method to geometry 2012-07-26 15:21:25 +01:00
artemp
ec2d0cc210 + wkb reader : close polygons 2012-07-26 15:20:56 +01:00
artemp
618bc1ba0f + close polygon 2012-07-26 15:20:23 +01:00
artemp
1844217615 + fix SEG_CLOSE value to be compatible with agg 2012-07-26 15:19:11 +01:00