Commit graph

282 commits

Author SHA1 Message Date
Artem Pavlenko
7d62c229d0 applied from patch from Krzysztof Godlewski :
reflects scale_denominator(..) into Python
2006-12-07 15:20:33 +00:00
Artem Pavlenko
05424a5f12 added query_point method that accepts lat,lon coordinates :
>>> for f in m.query_point([ layer.name for layer in m.layers ].index('world'),51,0):
...     print f
...

feature (
  f_code:FA001
  fac_id:193
  id:3147
  na2:UK
  na3:E
  nam:ENGLAND
  tile_id:10
)

>>>
2006-12-06 21:21:17 +00:00
Artem Pavlenko
af44541598 implemented query_map_point method on map object:
fs = m.query_map_point(x,y)  # Map (screen) coordinates
   for feature in fs:
       print feature

TODO: provide interface to feature in Python, at the moment only __str__ implemented which dumps attributes
2006-12-06 20:26:59 +00:00
Artem Pavlenko
258b91fad2 made width and height read-write 2006-12-05 16:32:53 +00:00
Artem Pavlenko
a4c81560fd added method 'render' with old signiture
render(...)
    C++ signature:
    render(mapnik::Map, mapnik::Image32 {lvalue}) -> void*
2006-12-05 15:43:52 +00:00
Artem Pavlenko
913b273f40 applied missing part from mapnik_tile patch 2006-12-04 20:12:58 +00:00
Artem Pavlenko
68bbcac872 Reflect featureset and feature classes in Python. Featureset follows Python iterator protocol e.g:
ds = Shapefile(file="/../..")
    for f in ds.features_at_point(Coord(-2,51)):
        print f
TODO: 
    1.access to Feature properties
    2.feature_at_point to accept screen coordinates
    3.apply hit_test for geometries.
2006-12-01 10:08:13 +00:00
Artem Pavlenko
4d4e9f5d91 Tiling patch from Toby allows for a selected pixel region within an extent
to be rendered. This allows for a large extent (larger than can be
rendered into a single image in memory) to be rendered out as tiles.
Since the full extent is used for the placement calculations text
crossing tile boundaries will be consistent.

This method is a little inefficient when a large number of labels need
placed, an improved method would be to cache these placements between
tiles, but the attached is a start.

c++ users should simple call the render method with a start X and Y
coordinate specified, 

for (int TileX = 0;TileX < 5;++TileX)
{
	for(int TileY = 0;TileY < 5; ++TileY)
	{
		int TileSize=250;
		int StartX = TileX*TileSize;
		int StartY = TileY*TileSize;
		
		Image32 buf(TileSize,TileSize);
		agg_renderer<Image32> ren(m,buf,StartX,StartY);
		
		ren.apply();
		char name[324];
		sprintf(name,"tile_%d_%d.png",TileX,TileY);
		ImageUtils::save_to_file(name,"png",buf);
	}
}

python users should call render_tile_to_file

for y in range(tile_count_y):
	for x in range(tile_count_x):
		if not os.path.exists("tiles/%d/%d/" % (map_scale, y)):
			os.makedirs("tiles/%d/%d/" % (map_scale, y))
		render_tile_to_file(m, x*tile_size, y*tile_size, tile_size, tile_size,
'tiles/%d/%d/%d.png' % (map_scale,y,x), 'png')
2006-12-01 09:37:37 +00:00
Artem Pavlenko
57ec29abf5 updated to reflect new params 2006-11-29 12:27:29 +00:00
Artem Pavlenko
f1393cc019 1. hit_test implementation for geometry objects:
bool hit_test(double x, double y, double tol);
       
2. added image_view(unsigned x, unsigned y, unsigned width, unsigned height)
   allowing to select region from image data e.g (in Python):

    im = Image(2048,2048)
    view = im.view(0,0,256,256)
    save_to_file(filename,type, view)
    
3. changed envelope method to return vy value in datasource classes

4. features_at_point impl for shape and postgis plug-ins
2006-11-25 11:02:59 +00:00
vspader
d7b94f5d8c Added avoid_edges property to shield and text symbolizers.
If this is enabled, no shield/text symbolizers will be cut off
at the edges of the image.
2006-11-17 14:07:41 +00:00
Artem Pavlenko
889ac41694 Patch from Toby: adds a maximum angle delta for text placement (if the
angle changes too much between characters it finds an alternate
placement), this is specified in the max_char_angle_delta property in
radians (feel free to change it to degrees).

It also improves the text placement around corners trying to minimise
the distance between the center of the character and the line on each
side. This is the major portion of the patch.
2006-11-04 10:38:24 +00:00
Artem Pavlenko
e924b597f4 1. patch from Toby that allows repeated labels to be placed on a line
geometry (such as roads)
2. restored text labels for point geometry.
3. process 'spacing' attribute in load_map.cpp
2006-11-01 23:17:05 +00:00
Artem Pavlenko
d7fcefc848 1. applied text-wrap patch from Robert Coup. Thanks!
2. by default use tinyxml as a property_tree parser
3. modified load_map.cpp to allow to test new features
2006-10-27 17:29:39 +00:00
vspader
118e8f0d52 Added face_name parameter to text and shield symbolizers,
which specifies the font face to be used for rendering.
New constructor is: text_symbolizer(name, face_name, size, ...)
2006-10-19 17:11:45 +00:00
Jean-Francois Doyon
85f1d27a12 - Add projection support to the WMS server and edit ogcserver readme accordingly.
NOTE: WMS 1.1.1 not tested, WMS 1.3.0 lightly tested.
2006-10-19 01:25:24 +00:00
Jean-Francois Doyon
ce1353553c Fix typo src -> srs property. 2006-10-18 23:57:44 +00:00
Artem Pavlenko
110016fe78 1. refactored proj stuff into separate files
2. added is_geographic property
3. added basic support for text_symbolizer in load_map
2006-10-17 17:26:35 +00:00
vspader
f76079f15b 1) Added line following labels. Use set_label_placement(POINT_PLACEMENT) or set_label_placement(LINE_PLACEMENT) on a text symbolizer.
2) Added placement_finder class so labels try to avoid each other.
3) Added Shield Symbolizer which is essentially a combined image/text symbolizer.
2006-10-17 14:12:53 +00:00
Jean-Francois Doyon
7c398909f4 - Apply recent changes to WMS 1.1.1 2006-10-17 01:18:54 +00:00
Jean-Francois Doyon
6e41d4cb1f - Remove the import of pyprojection
- Delete pyprojection
- Modify the WMS to use the new Projection class provided by Mapnik.
2006-10-17 01:11:00 +00:00
Jean-Francois Doyon
9170b57041 Reorder headers to prevent a warning.
See http://docs.python.org/api/includes.html for details.
2006-10-16 23:26:57 +00:00
Jean-Francois Doyon
5e9fe74999 layer.name is now a property instead of a method ... 2006-10-16 23:25:54 +00:00
Artem Pavlenko
9570a819df 1. added convinience factory methods
ds = Shapefile(file='/../../')
    ds = PostGIS(host='localhost',..)
    ds = Raster(....)

2. Modified rundemo.py accordingly
2006-10-16 22:25:11 +00:00
Artem Pavlenko
1b7e1b421e added missing header 2006-10-16 21:57:27 +00:00
Artem Pavlenko
2351cb38d0 1.added Describe() to Datasource, return list of attributes/types.
2.modified WMS to work with new Projection
2006-10-16 21:34:09 +00:00
Artem Pavlenko
bb235fa316 1.added projection transformation support based on proj4 (new dependency!!!)
Map and Layer objects both have a new parameter 'srs', initialized to "+proj=latlong +datum=WGS84" by default. 
    
  Basic usage (Python):
    p = Projection("+proj=merc +datum=WGS84")
    point = p.forward(Coord(-2,51))
    ...        
2.reflected arithmetic operators for Envelope/Coord into Python
3.altered return policies for python objects
4.modified build system to require proj4 lib and headers
2006-10-16 13:44:52 +00:00
Artem Pavlenko
78f2b64f5c check if can extract std::string from dict. 2006-10-09 22:07:39 +00:00
Artem Pavlenko
992af4747d 1. move include to mapnik/include
2. update demos,bibdibgs etc.
2006-10-04 11:22:18 +00:00
Artem Pavlenko
5a2e437e21 reflect load/save map methods in python 2006-10-03 10:02:14 +00:00
Artem Pavlenko
8328424af5 1. datasource is now a property of Layer object.
2. modified python/c++ demos to reflect the above.
3. removed large 'blobby' mapnik.hpp (compilation times!!!)
2006-10-03 08:44:04 +00:00
Artem Pavlenko
c0fa1a6004 * create_filter moved to core lib
* modified demo/c++/rundemo.cpp to reflect the above
2006-09-17 19:45:01 +00:00
Artem Pavlenko
02d95a7ba2 added write access to alpha property. 2006-09-15 08:20:09 +00:00
Artem Pavlenko
2f360a6549 1.removed map width/height from query interface
2.small cleanups
2006-09-12 14:29:22 +00:00
Artem Pavlenko
93740b5dec refactored #includes to reduce compilation times
added mapnik_query skeleton
2006-09-11 09:48:27 +00:00
Artem Pavlenko
31d04c3131 added support for building on x86_64 platform e.g. /usr/lib64 etc. 2006-09-06 09:14:41 +00:00
Artem Pavlenko
494556f0de added zoom_all method 2006-08-23 20:35:01 +00:00
Artem Pavlenko
8dd7798c1c added envelope() method to map object 2006-08-23 20:17:16 +00:00
Jean-Francois Doyon
6f7d9eab8a - Fix bug in WMS 1.1.1 re: STYLES support. 2006-07-23 19:56:13 +00:00
Jean-Francois Doyon
9d9d441239 Added support for associating multiple named styles to a layer
and specifying one using the STYLES= WMS request argument.
2006-07-23 19:50:52 +00:00
Jean-Francois Doyon
1c8aca919f - Added support for complete service metadata
- refactored some code for optimization
- cusomtized the config parser
2006-07-22 18:54:53 +00:00
Artem Pavlenko
ad79c5a4fd applied patch from Shaun Walbridge - make dl module work on x86_64 2006-06-27 19:47:20 +00:00
Artem Pavlenko
9980d406fc removed wms.py - was causing checkupt problems on win32 (WMS.py == wms.py on win32) 2006-06-07 17:02:56 +00:00
Artem Pavlenko
024f501903 1. exposed fill_opacity property in PolygonSymbolizer
2. added default ctors to {Point,Line,Polygon}Symbolizers
2006-05-31 21:25:21 +00:00
Artem Pavlenko
dfeaeaa16b converted to unix 2006-05-30 21:59:06 +00:00
Jean-Francois Doyon
799d5d9691 - Fix a bug with missing version.
- Add support for layer title and asbtract to c++ and python
- Make WMS server use above changes, edit docs
2006-05-22 17:00:35 +00:00
Jean-Francois Doyon
a3eeef77de Remove an overly restrictive bit of "checking" that did
not allow clients to feed non-WMS parameters to the server.
2006-05-22 14:45:52 +00:00
Jean-Francois Doyon
46f9b02394 - Rigidified parameter validation
- Fixed BLANK exception handling bug
- Added STYLES/LAYERS correlation check
- Finalized ogcserver readme.txt
- Got rid of a compiler warning with PyProjection
- Some coding style edits
2006-05-11 04:24:51 +00:00
Jean-Francois Doyon
1cca95add9 Remove GIF support. 2006-05-11 00:29:39 +00:00
Jean-Francois Doyon
c879591630 Make the background property of an Image available to Python. 2006-05-04 00:00:20 +00:00
Jean-Francois Doyon
30d930c709 - Updates docs/ogcserver/readme.txt
- Added GetCapabilities named style support to 1.1.1
2006-04-21 00:18:07 +00:00
Jean-Francois Doyon
ab7d66ee8c - Add support for named styles in GetCapabilities. Not yet supported by GetMap however.
- Add finalize() to BaseWMSFactory to run sanity checks.
2006-04-21 00:13:25 +00:00
Jean-Francois Doyon
bde3b7ae51 - INIMAGE text now on transparent background
- BLANK error handling support added
2006-04-16 19:23:37 +00:00
Jean-Francois Doyon
f862ef425f Added support for INIMAGE error handling. 2006-04-16 04:17:39 +00:00
Jean-Francois Doyon
b8ac9b1984 OK, final fixes to the WMS stuff, cleaned up documentation, and so on.
Things should be good to go for a first try by the wider community!
2006-04-14 03:45:46 +00:00
Jean-Francois Doyon
af55c99fa4 - Improve WMS compliance
- Remove unused code
- Rework layer and style bulding
- minor doc changes
2006-04-13 02:39:49 +00:00
Jean-Francois Doyon
d4b5171efb - Add some more error checking
- Simplify configuration
2006-04-11 00:36:08 +00:00
Jean-Francois Doyon
603c0c0fa3 - Add the CGI executable, and a sample configuration file
- Various code optimizations:
  - Remove unnecessary imports
  - Better share/re-use objects
  - Move more work to initialization, to optimize for FastCGI
2006-04-10 06:19:27 +00:00
Jean-Francois Doyon
56166790df - Improved error handling and detection
- Refactored WMS code quite a bit
- TODO: better map factory.
2006-04-08 21:53:36 +00:00
Jean-Francois Doyon
8d336dcf7d Adding the initial implementation of an OGC server in Python for Mapnik. Although it works, it needs polishing and documentation, which will follow shortly. 2006-04-08 06:18:50 +00:00
Artem Pavlenko
61fd258fd1 changing licence from GPL to LGPL 2006-03-31 10:32:02 +00:00
Artem Pavlenko
ead91700c2 small optimization 2006-03-31 08:55:35 +00:00
Artem Pavlenko
b7e96d387b fix rawdata() method to return PyString_FromStringAndSize 2006-03-29 22:26:55 +00:00
Jean-Francois Doyon
7e05522b52 - Add an ignore.
- load Projection class and DEGREES constant into mapnik module namespace so that one can "from mapnik import Projection, DEGREES"
- Clean up the build/install of the python module.
2006-03-28 01:07:01 +00:00
Jean-Francois Doyon
04dc62160e Added some docstrings. 2006-03-28 01:01:00 +00:00
Jean-Francois Doyon
2d18a3a2c0 Add python PROJ.4 module under mapnik python API.
This makes the Projection class available from mapnik:

>>> from mapnik import Projection
registered datasource : raster
registered datasource : shape
registered datasource : postgis
>>> Projection
<class mapnik.Projection.Projection at 0xb7f7250c>
>>>
2006-03-26 22:35:37 +00:00
Jean-Francois Doyon
81b694f782 - Add .sconsign to svn:ignore ...
- Create a fontscollectionpath in paths.py and use it.
2006-03-22 00:41:52 +00:00
Jean-Francois Doyon
08b80bbc64 Add docstrings, and add support for setting the
map width and height after object creation.
2006-03-22 00:13:14 +00:00
Jean-Francois Doyon
30dd43200b Add support for halo's to TextSymbolizer(). 2006-03-22 00:11:01 +00:00
Artem Pavlenko
153fbc9572 added font_engine to python bindings (TODO!) 2006-03-19 21:55:59 +00:00
Artem Pavlenko
c93e9c7d5b small correction:
1. Layer method takes named arguments
2. CreateLayer expects Python dictionary
2006-03-01 15:34:23 +00:00
Artem Pavlenko
06da5f14eb keyword arguments for Layer factory 2006-03-01 15:15:37 +00:00
Jean-Francois Doyon
d0f0f5a564 Changed the layer constructor to use a more pythonic:
Layer(name, type, file)

Please review and comment!
2006-03-01 04:14:41 +00:00
Artem Pavlenko
c3ff3084ca 1.added to_string method to Color
2.added factory methods to python Color

use factory methods
2006-02-27 21:57:08 +00:00
Artem Pavlenko
3818da6bc5 added quad_tree implementaion 2006-02-27 21:25:25 +00:00
Jean-Francois Doyon
efc23b9217 Fixed up some more styling.
color_from_string is now Color
filter is now Filter

and maybe a few more ...
2006-02-26 23:04:47 +00:00
Jean-Francois Doyon
34dc842d2d Reworked all the svn:ignore properties. They are all set explicitely now, and nothing should be left unacounted for.
Changed SConstruct to use freetype-config.  Updated INSTALL to reflect.

Added a RAM requirement for building in the INSTALL doc.

Fixed some python styling and added some basic docstrings.
2006-02-26 21:47:35 +00:00
Artem Pavlenko
9de253198b 1.python bindings updated to reflect symbolizers changes
2.added label collision detector ( TODO - proper impl!)
2006-02-25 11:03:30 +00:00
Jean-Francois Doyon
897341e042 Capitalized class names as per the "Style Guide for Python Code" at:
http://www.python.org/peps/pep-0008.html

Because the bindings are out of synch, this is untested.
2006-02-20 01:34:02 +00:00
Jean-Francois Doyon
9f9e4c1d8e Reworked the way the tail end of the boost libs (i.e. -gcc-mt) is handled.
This will eventually help with mroe platforms, and to link with debug libraries.
2006-02-06 01:08:32 +00:00
Artem Pavlenko
2a858bcd19 1.removed named_style_cache
2.styles moved to Map object
2006-02-05 09:45:51 +00:00
Artem Pavlenko
d8dc53bcf4 new build system 2006-01-31 23:09:52 +00:00