Commit graph

103 commits

Author SHA1 Message Date
vspader
9fe4a94c98 Added minimum_distance property to text symbolizers. This prevents the same label from appearing within N pixels (across features).
Shield symbolizer is now a subclass of text symbolizer.
Some small improvements to text rendering.
Fixed up placement finder for horizontal placement.
Cleaned up placement finder.
2007-07-02 13:39:08 +00:00
Artem Pavlenko
cc3b5bece1 applied patch from jonb - glob for all *.ttf 2007-06-20 20:20:16 +00:00
Artem Pavlenko
ab149257ad added save_to_file method that works with Image object. 2007-06-12 19:30:58 +00:00
Artem Pavlenko
8010d5433f 1. Removed srid from geometry class
2. Pass resolution to bbox query
3. Use variant<int,double,string> as parameter value e.g in Python:
	ds = Raster(file="/path/to/file",lox = 12312.4,.....)
   Added extractor facility to work with mapnik::parameter (C++):
	
	mapnik::parameters params;
	params["parameter0"] = 123.456;
	params["parameter1"] = "123.456"; // initialize with string extract double later
	
	boost::optional<double> val0 = params.get<double>("parameter0");
	if (val0) 
	{
	   std::cout << *val0;
        }
	
	
	// with default value. NOTE: there is no 'parameter2' in params
	boost::optional<double> val2 = params.get<double>("parameter2",654.321);
	std::cout << * val2;
        
	// 
4. Added Gdal factory method in __init__.py

        ds =  Gdal(file="/tmp/file.tiff")
2007-06-12 08:59:54 +00:00
Artem Pavlenko
e8d5172a64 added convertions :
std::pair<std::string,mapnik::value>  to Python tuple
mapnik::value -> PyObject
2007-06-05 09:12:30 +00:00
Artem Pavlenko
a6a31f42f6 implelmented optional 'clear' text labels cache at the layer level 2007-05-01 07:53:20 +00:00
Artem Pavlenko
8b74a301fb Be explicit about threading model
Added THREADING enum options (defaults to 'multi')
2007-03-22 10:54:44 +00:00
Artem Pavlenko
e0d243dcec 1.Added support for building on Darwin (Xcode 2.4.1, gcc4.0.1).
Mainly taming gcc4.0.1 (anonymous enum bug)

2.Input plug-ins now have .input extension on all platforms
2007-03-16 10:11:37 +00:00
Jean-Francois Doyon
2bc9ef83cc - Improve exception handling and error displaying in the ogc server. 2007-03-13 01:17:03 +00:00
Jean-Francois Doyon
737fcdd516 - Add WSGI handler
- Add a performance improvement that should make maps a little faster
2007-03-05 03:20:35 +00:00
Jean-Francois Doyon
2513da8f79 - Add first draft of getfeatureinfo support with text/plain and text/xml support.
- ignore a SCons file
- Add 'encoding' statement to the demo.
2007-02-20 00:22:04 +00:00
Artem Pavlenko
2d256166b4 Store text attributes as USC-2 encoded std::wstring 2007-02-14 19:54:39 +00:00
Artem Pavlenko
bf2859cee2 replaced Bistream Vera with DejaVu 2007-02-12 15:25:59 +00:00
Artem Pavlenko
fe313cdcd9 fixed property name 2007-02-05 11:53:00 +00:00
Artem Pavlenko
5b05ffe1a4 made text_placement a property. 2007-01-29 22:29:06 +00:00
Jean-Francois Doyon
836488a7c8 - Add support for text/plain GetFeatureInfo! 2007-01-25 01:50:11 +00:00
Artem Pavlenko
85f4bfc697 added queryable property and visible method to Layer (Python) 2007-01-09 11:23:19 +00:00
Artem Pavlenko
995980433e reflect feature's properties in Python
(see wiki for more info and usage)
2006-12-31 11:44:34 +00:00
Artem Pavlenko
b5cf9da686 1.added more accessors
2.in tiff_reader check for valid file prior opening.
2006-12-20 00:22:45 +00:00
Artem Pavlenko
659a012000 reflected Layer 'active' property in Python ( Thanks, Luiz Fernando Vital!) 2006-12-17 12:08:11 +00:00
Artem Pavlenko
31442b6bac Added DESTDIR option which is used as an additional prefix for the purposes of
installing files. It is useful for binary distributions (eg
RPM etc). Thanks to Dominic Hargreaves!
2006-12-17 12:05:47 +00:00
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