Home

"user manual"

image

Contents

1. CartoWeb trigger Search DoIt 154 Search plugin function recenter id if search_config value Adresses id to recenter be sure there is a hidden input with that name and 7 7id an your Lemplare if net add it id_recenter_ids value id if the search database table name is the same as the related layer to recenter on you can set it as below be sure there is a hidden input with that name and id in your template aki motn Eyelet alte lt id_recenter_layer value search_config value do not use the recenter_scale parameter if you recenter on ids only use it with recenter on x y you can set the recenter scale in location ini on server side do not use the recenter_doit parameter if you recenter on ids only use it with recenter on x y CartoWeb trigger Location Recenter 24 3 1 1 Guided Search Note The Basic Usage chapter is a prerequisite to the read of this one A often meet case is to have a incremental search Each time a search parameter is selected the following parameter is completed Let s now take a concrete case We keep the same database as in the above sample Imagine we have a select field that is initialised with the towns names When you choose a city a select fields containing all the streets of the town appears When you choose a street the final search is launched As mentioned above we have to set the search ini file dsn
2. In this case the second class would not appear in the legend because the NAME is commented out Provided that no static icon is defined for a layer in layers ini the icon of the first visible class is used for the layer Legend icons are also used when exporting maps in PDF see Chapter 12 PDF Export fone I Standard legend icons are used by default which means that they may seem pixelized when printing a 300 dpi map To resolve this issue the following parameter can be set in layers ini legendResolutions 96 150 300 Each resolution must correspond to one of those set in PDF Export configuration file This file is described in Section 12 2 1 General Configuration 6 5 WMS Layers Legends Mapserver could act like a WMS client and retrieved layer from distant WMS server In this specific case layers legends could be retrieved directly from a distant server with SLD support get LegendGraphic method You must also add a metadata on each WMS layer to retrieve its legend icon wms_legend_graphic Here is an example LAYER NAME prov_boundary TYPE RASTER CONNECTION http www2 dmsolutions ca cgi bin mswms_gmap CONNECTIONTYPE WMS METADATA wms_srs EPSG 4326 wms_name prov_bound wms_server_version Ea a e wms_format image png wms_legend_graphic true END END 6 6 Auto Layers In some cases it may be useful to generate several layers out of a single template layer An example wo
3. ption as many times as necessary Default project to use URL where you can find client php The profile to use development production custom NOTE default is development Clean views must be used with clean 19 Installation clean accounting Clean accounting must be used with clean keep directories Do not remove the generated directories during cleaning must be used with clean keep permissions Do not alter the permissions of writable directories 1 1 3 2 Examples of Use 1 1 3 2 1 Basic Setup To perform a basic setup of CartoWeb such as if you want to run the demo project type lt PHP INTERPRETER gt cw3setup php install base url http www example com cartoweb In this example http www example com cartoweb is the address which corresponds to the cartoweb3 htdocs directory You should find client php if you type this URL 1 1 3 2 2 Installing a Project from a Directory lt PHP INTERPRETER gt cw3setup php install fetch project dir hnome foo my_project base url http www example com cartoweb 1 1 3 2 3 Updating CartoWeb after Modifications When you modify or add new content features to CartoWeb you need to update it This will set relative links or copy new modified resources files templates images new plugins lt PHP INTERPRETER gt cw3setup php install base url http www example com cartoweb Same as Section 1 1 3 2 1 Ba
4. Version Of Output version information and exit SEa Install CartoWeb 18 Installation fetch demo clean InLSie Oi ROP ENONSE debug writableowner OWNER OMS LOOL A LEON EEO ONS Fetch the demo data from cartoweb org and extract it in the demo project if not already there Clean generated files and caches Turn on output debugging The user who should have write permissions for generated files CVS Root directory to use when fetching CartoWeb project out of CVS Fetch CartoWeb from CVS and install it in the current directory or in the directory given by the install location parameter NOTE You must be located where cartoweb3 directory will be created not inside like other commands cartoweb cvs option OPTIONS A string which will be given to the cvs checkout fetch from dir DIRECTORY ee lil ihoeisne aor delete existing no symlinks config from file FILE command of cartoweb not projects For instance to fetch a specific branch use r MY_BRANCH Or for a specific date uee D US ei ag eS Copy CartoWeb from the specified directory into the current directory or in the directory given by the install location parameter NOTE 1 You must be located where cartoweb3 directory will be created not inside like other commands NOTE 2 You may either use a path relative to the target cartoweb3 directory or an absolute path Directory where to in
5. gt lt input type hidden id search_sort_column name search_sort_column value gt lt input type hidden id search_sort_direction name search_sort_direction value asc gt lt input type hidden id search_number name sSearch_number gt lt div id search_results_div gt lt div gt lt fieldset gt lt div gt Finally we have to set up the java script file Open or create the plugins search htdocs 4js Search ajax js file and write AjaxPlugins Search handleResponse function pluginOutput we inject the select input in the HTML if pluginOutput htmlCode Adresses_init_town should be the same value as the input search_config S town_select_div innerHTML pluginOutput htmlCode Adresses_init_town 157 Search plugin if pluginOutput htmlCode Adresses_init_street should be the same value as the input search_config street_select_div innerHTML pluginOutput htmlCode Adresses_init_street if pluginOutput htmlCode Adresses should be the same value as the input search_config search_results_div innerHTML pluginOutput htmlCode Adresses Ao Sareh pP UG INAS ACETONS A AjaxPlugins Search Actions AjaxPlugins Search Actions DoIt buildPostRequest function argObject return AjaxHandler buildPostRequest hi function order column if column Si search sort column value search_sort_column value column search
6. apt get install locales Two scripts have been prepared to check if gettext is correctly installed on the 123 Internationalization system e scripts testgettext sh This will compile and run a small C program that will test xgettext and msgfmt e scripts testgettext php Given that gettext was correctly installed on the system this will test that gettext works in PHP Note These scripts need that locales have been correctly configured They were tested on GNU Linux with a Debian Sarge install Note On debian etch systems locale alias path has changed You should find it in usr share locale locale alias 17 1 1 2 Win32 In order to have the language translation working correctly in Cartoweb with Gettext you need to have the languages you want to use installed in the Input Locales of Windows windows 2000 Control Panel gt Regional Options gt Input Locales windows XP Control Panel gt Regional and Language Options gt Details gt Settings 17 1 2 PO Templates Texts to be translated can be found in e Smarty templates using SmartyGettext http sourceforge net projects smarty gettext see Section 18 2 Internationalization e Client plugins ini files for instance map sizes e Server plugins ini files for instance scales labels e Mapfile s ini and map layers labels e Client and server PHP code see Section 5 1 Translations To generate PO templates
7. Projects scripts maintenance and administration scripts server CartoWeb server code files server_conf Cartoweb server side configuration files see Section 4 3 Server Configuration Files templates CartoWeb Smarty templates files see Chapter 18 Templating templates_c smarty templates cached files tests CartoWeb unit tests suite mainly used for development and debug purposes www data writable and web accessible directories for generated files o icons Generated icons o images Mapserver images o mapinfo_cache Client side server configuration cache see Section 5 6 Caches Configuration o mapresult_cache Client requests and associated server results cache see Section 5 6 Caches Configuration o pdf Pdf generated cache files o soapxml_cache Client SOAP XML requests and associated server results cache see Section 5 6 Caches Configuration o wsdl_cache Client side WSDL cache see Section 5 6 Caches Configuration 2 3 Plugins Modularity is a key feature of CartoWeb Its functionalities are packaged in logical sets called plugins that aim to be independent from each other although some dependencies cannot be totally avoided Some plugins core plugins cannot be disabled while the other ones must be explicitly loaded in the server and or client configuration files 30 Structure Nearly all plugins have configuration options set in ini files The full descript
8. Set it to 0 if user is only allowed to update or delete features e editLayers comma separated list of layers that are editable e editResultNbCol number of columns to use to display the attributes table e editDisplayAction this string parameter is used to tell if the validate and cancel buttons have to be displayed also under the attributes table If empty or both buttons will be displayed both in the folder and under the attributes table If folder buttons will be displayed only in the folder 14 2 Related Elements in Mapfile 14 2 1 Metadatas Specific metadatas must be set in the mapfile for the editable layers METADATA edit_table edit_poly PostGIS table edit_geometry_column the_geom PostGIS geometry column edit_geometry_type polygon PostGIS geometry type edie arici i edit_attributes parc_id name string culture string surf parc_type integer list of the editable edit_rendering textarea hidden OPTIONAL list of visual rendering of inputs in the form END e edit_table string name of the postGIS table to edit e edit_geometry_column string name of the geometry field in the table e edit_geometry_type string type of the geometry of the features for the layer 111 Editing plugin edit possible values are point line polygon May differ from the msLayer type rendering e edit_srid integer optional id of the SRID e edit_attributes string comma separated list o
9. categ layers layers root className LayerGroup layers root children background human categ wmsLayers layers root children default background human wmsLayers layers root children switch2 background categ wmsLayers layers root rendering block We have 2 switchs defined switch and switch2 By default the switch select in the interface will contains 3 switchs default switch1 switch2 If we set relatedDefaultSwitchId switch1 and modify the template accordingly see the example in project demoCW3 the select will contains only switch and switch2 In the layers definition we only use default and switch2 If the user select switch in the interface the default switch will be used as switch is not defined no more duplicate definition of switch 6 3 Metadata in Mapfile and layers ini Metadata are keyword value pairs which can be associated to a MapServer layer in the mapfile or to a Layer or LayerGroup in the layers ini configuration file These metadata are used in several different contextes such as layer specific configuration security handling The metadata related to the functionalities of CartoWeb are described in the documentation of the corresponding plugins 6 3 1 Metadata in Mapfiles Specifying metadata in mapfiles is based on the standard MapServer syntax For instance LAYER NAME my_layer ERA METADATA exported_values security_view some_specific_parameter data_encoding
10. class SoapFault message parse error unexpected T_VARIABLE The fact no line number and Php file is displayed is a limitation of the Php SOAP implementation workarounds are welcomed In such a situation a solution for this problem is to enable the CartoWeb direct access mode of operation Direct access mode is set with the cartoserverDirectAccess parameter of the client_conf client ini configuration file For more details about this parameter see Section 4 2 client ini 269 Performance Tests 10 Performance Tests 10 1 Main Parameters This is a non exhaustive list of interesting parameters for CartoWeb performance tests You may want to vary these parameters values when testing performance before and after development of new functionalities e Cartoweb configuration o Local SOAP distant SOAP or direct mode o Data on PC or through NFS o Map size o Number of active layers o Dynamic legends or not e Logs and cache o MapInfo cached or not o MapResult cached or not o SOAP XML cached or not o Logs activated or not e Map data o Number of layers 10 50 250 10 2 Executing Tests This section describes performance tests execution using APD a debugging profiling tool available as a Zend PHP module 10 2 1 APD Module Installation First thing to do is to install APD s PHP Zend module You can download archive here http pecl php net package apd Follow instructions to compile APD Then load
11. e aggregate if true children are not displayed and cannot be selected individually e rendering how layer will be displayed tree block radio or dropdown See Chapter 6 Layers for more details on this option coreplugin e metadata list of meta data defined in server configuration file Format of each string in list is variable_name value lt complexType name ArrayOfLayer gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types Layer gt lt restriction gt lt complexContent gt lt complexType gt e array list of layers lt complexType name SwitchInit gt lt all gt lt element name id type xsd string gt lt element name label type xsd string gt seais lt complexType gt e id switch ID e label switch label lt complexType name ArrayOfSwitchInit gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types SwitchInit gt lt restriction gt lt complexContent gt lt complexType gt e array list of switches lt complexType name LayersInit gt lt all gt lt element name notAvailableIcon type xsd string gt lt element name notAvailablePlusIcon type xsd string gt 192 Calling Plugins lt element name notAvailableMinusIcon type xsd string gt lt element name layers type types ArrayOfLayer gt lt e
12. gt lt element name scalebar type types Image gt lt all gt lt complexType gt e className ImagesRequest or extended class name if project implements an extension e mainmap main map image information e keymap key map image information e scalebar scale bar image information 1 3 2 2 Images Result lt complexType name ImagesResult gt lt all gt lt element name className type xsd string gt lt element name mainmap type types Image gt lt element name keymap type types Image gt lt element name scalebar type types Image gt lt all gt lt complexType gt e className ImagesResult or extended class name if project implements an extension e mainmap main map image information see Section 1 3 2 1 Images Request for a description of type Image e keymap key map image information e scalebar scale bar image information 1 3 3 Layers The Layers plugin handles layers selection Its request object includes list of layers to be displayed on main map This plugin has no specific result object 1 3 3 1 Layers Request lt complexType name LayersRequest gt lt all gt lt element name className type xsd string gt lt element name layerIds type types ArrayOfLayerlId gt lt element name resolution type xsd int gt lt element name SwitchId type xsd string gt 197 Calling Plugins lt all gt lt complexType gt e className
13. logRegexp d d d d d d d d log mapIdConfig mapIDs ini 176 CartoWeb and WMS Usage Statistics plugin statsReports Content of the mapIDs ini file mapIDs GET ogc sitn wms main GET ogc sitn annuaire wms annuaire GET ogc sitn vl wms vl GET oge sitj vl wms jvl Help on the possible parameters for a command can be obtained by starting it without parameters 30 1 3 Configuring Reports A report is a set of parameters that defines how data will be aggregated in order to visualize statistics For instance parameters include the list of criteria dimensions that will be available to the end user Reports are defined in an INI file A typical section looks like scale project A comment label Stats per project type simple periods day 30 periods month 12 periods year 5 values pixel count countPDF countDXF dimensions project filters project sitn jura The fields are e label report name for the GUI e type type of report see below e periods how to divide the time see below e values what values are stored see below e dimensions what criteria user will be able to specify in the GUI see below e filters what records you want to take into account see below 30 1 3 1 Report Types Currently available types are e simple graphs or tables e gridbbox colored maps based on the bounding box of the viewed maps e gridcenter colored
14. lt element name timestamp type xsd integer gt lt element name mapLabel type xsd string gt lt element name keymapGeoDimension type types GeoDimension gt lt element name initialMapStates type types ArrayOfInitialMapState gt elements specific to plugins lt all gt lt complexType gt timestamp timestamp of last update This timestamp is transferred each time method getMap is called so client knows when configuration was modified see also Section 1 3 1 1 Global Request e mapLabel name of map as defined in mapfile e keymapGeoDimension pixel and geographical dimension information for key map e initialMapStates list of initial states 1 2 2 Layers This includes configuration specific to Layers plugin ie list of all available layers and their properties lt complexType name ArrayOfLayerId gt 190 Calling Plugins lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType xsd string gt lt restriction gt lt complexContent gt lt complexType gt e array list of layer IDs lt complexType name ChildrenSwitch gt salla lt element name id type xsd string gt lt element name layers type types ArrayOfLayerId minOccurs 0 gt eS lt complexType gt e id switch ID e layers list of layers lt complexType name ArrayOfChildrenSwitch gt lt complexContent gt lt restrictio
15. path to symbol images var symbolType type of image files jpeg gif png whatever var symbolNamesArray new Array symbolfilenamel symbolfilename2 othersymbolfilename var symbolLabelArray new Array symbollabell symbollabel2 othersymbollabel Pel ny lt script gt symbolNamesArray contains the list of filename to use for your images symbolLabelArray contains the list of label used on screen for the symbols Create your symbol images and put them in path to symbol images You also need to create hilighted versions of your images give them the same filename but add the suffix _over Exemple symbol_1 gif gt symbol_1_over gif Put them in the same folder 10 5 3 2 3 Symbol Hilight Mode There are two modes to hilight the selected symbol in the SymbolPicker interface You can select between border hilight and inverted image border hilight simply use a css property to hilight the border of the selected symbol inverted image need the php library GD to create an inverted version of the symbol which is then used for the selected symbol The hiligh mode is set in the server_conf outline ini file e symbolPickerHilight inversedlborderhilight 10 5 4 ToolPicker Default Values If the toolPicker is used with the Outline plugin the default values for Color 78 Annotation and Redlining ipiugiai cautliies OutlineColor Transparency and Symbol are set in the mapfile The default l
16. type types ArrayOfMessage minOccurs 0 gt elements specific to plugins lt all gt lt complexType gt e timestamp timestamp which identifies the server configuration If this timestamp changes it means server configuration changed and a call to method getMapInfo is required to get latest version see Section 1 2 Call to getMapInfo e serverMessages list of messages returned by server 1 3 2 Images The Images plugin generates MapServer images The three types of images are main map key map and scale bar Basic parameters such as image size are defined in this request result More specific parameters such as map location or content are defined in other plugins 1 3 2 1 Images Request lt complexType name Image gt xall gt lt element name isDrawn type xsd boolean gt lt element name path type xsd string gt lt element name width type xsd int gt lt element name height type xsd int gt sreli lt complexType gt e isDrawn true if the image should be generated when used in a request or if it was generated when returned in a result e path relative path of generated image Not used in request e width image width e height image height 196 Calling Plugins lt complexType name ImagesRequest gt lt all gt lt element name className type xsd string gt lt element name mainmap type types Image gt lt element name keymap type types Image
17. 1 gt attribute_4 columnTitles gt Array 0 gt attribute_3 1 gt attribute_4 noRowId gt rows gt Array 0 gt stdClass Object rowId gt 123 cells gt Array 0 gt Foo 1 gt 84 98 1 gt stdClass Object rowId gt 456 cells gt Array 0 gt Bar Li Se Sey 216 New Plugins 2 New Plugins 2 1 What are Plugins 2 1 1 Definition CartoWeb plugins are modular packages of files PHP classes HTML templates images and other resources that are used to perform a dedicated action main map formatting layers browsing interface map browsing zooming paning etc queries user authentication search interfaces and many more 2 1 2 Plugins and Coreplugins There are two kinds of plugins e coreplugins fundamental plugins that perform low level actions such as map size handling browsing tools layers selection Plugins that are frequently used in many CartoWeb applications may be included in this category as well They are always available and activated As a result other plugins may interact with them Coreplugins files are grouped in the coreplugins directory e plugins normal plugins perform more specificactions and are not always activated Normal plugins activation is done by setting the loadPlugins parameter in client_conf client ini for CartoClient plugins and in server_conf lt mapId gt lt mapId gt ini for CartoServer ones For in
18. 6 3 3 Using the metadata fields in templates layers tpl Metadata declared in mapfiles or Layers ini can be used in the layers tp1 Smarty templates using the following notation capture name caption Selement layerLabel lt a 51 Layers coreplugin href lang Selement layerMeta lang amp client_id element layerMeta client_id gt element layerMeta complex_label lt a gt capture As we can see in the previous example metadata values can be used through the layerMeta property of the element Smarty variable Typical usage of this feature is to render for instance several HTML links for each layers 6 4 Layers Legends CartoWeb includes a mechanism for the automatic generation of legends If desired an icon is drawn for each class of the layers There are two conditions that must be fulfilled to make it work 1 The mechanism must be enabled by setting autoClassLegend true in layers ini 2 Each class or more precisely each class that should appear in the legend must have a name Here an example LAYER NAME spur_spurweite METADATA END TYPE line CLASS NAME Normalspur 1435 mm EXPRESSION MM 1435 SPGE COLOR 0 0 255 blue END END CLASS NAME Meterspur 1000 mm EXPRESSION MM 1000 STYLE COLOR 255 0 0 red END END CLASS NAME Schmalspur lt 900 mm EXPRESSION MM lt 900 STYLE COLOR 128 0 128 lila END END END 52 Layers coreplugin
19. It displays an arrow or any image that will automatically show the north direction Path set in arrow block content parameter is relative to CartoWeb root directory For instance blocks north type north content plugins exportPdf htdocs gfx arrow png width 10 height 36 blocks nort blocks nort blocks nort blocks north padding 2 blocks north verticalBasis bottom blocks north horizontalBasis left blocks north inFlow false blocks north horizontalMargin L5 h h h h h blocks north parent mainmap h h h h h blocks north verticalMargin 5 12 3 4 8 Currentuser Block 105 PDF Export plugin You can use the currentuser block to display somewhere the username of the user who initiated the pdf generation This block do not require any special parameters beside the common positionning and styling 12 3 5 Roles Management CartoWeb enables to perform roles restrictions on most of the PDF document parts general access formats resolutions blocks All these elements can be restricted to some authorized users For a more detailed discussion of the concept of security restriction and roles see Chapter 15 Security Configuration To do so simply add to considered objects blocks an allowedRoles property set to the comma separated list of roles you want to restrict them to For instance e to enable PDF printing only for loggedIn users use general allowedRoles loggedIn
20. Note3 don t forget to activate the plugin by adding it in the loadPlugins from BOTH CartoClient and CartoServer configuration files client_conf client ini and server_conf lt mapId gt lt mapId gt ini For instance An client cont client ini loadPlugins hilight outline exportPdf in server_conf lt mapId gt lt mapId gt ini mapInfo loadPlugins hilight outline exportPdf 12 3 2 Overall Configuration Two objects are available for overall configuration 12 3 2 1 general This is where you can set the list of available resolutions and formats made available to the user through dropdown menus Use commas to separate the available values defaultResolution and defaultFormat are used to preselect options in the matching dropdowns If for some reason the system failed to determine what resolution and format the user desires it will use those default values Specify the default orientation to select in user interface as well You don t need to set a list of available orientations since it is already fixed to portrait landscape The activatedBlocks parameter lists the blocks that may be drawn in the document 95 PDF Export plugin It does not mean that they will For instance the title block will not appear if no title input has been submitted by the user Choose the PDF generator you want to use For now only FPDF is fully available PDFLib is only partially implemented and should not be used Set the
21. ToolTips plugin 23 ToolTips rplugi gin 23 1 Introduction The tooltips plugin aim is to show features attributive information on top of the map without refreshing the whole page 23 2 Basic Usage 23 2 1 Introduction When user moves the mouse over the map and stops during several milliseconds an AJAX request is sent to the CartoClient using the geographical coordinates of the cursor If the webserver finds features corresponding to the defined timeout_async layers a response is sent back to the browser with some generated HTML code showing some attributive information 23 2 2 Pros Cons Pros e fully customizable layout e several results can be displayed even for stacked features e isn t dependant to the feature counts performances should not fail even for huge quantity of feature Cons e database postGIS required 23 2 3 Configuration Here are defined parameters available for timeout_async layers e label optional label for the layer If not set layerld is diplayed e asn connection string to database Data Source Name dbTableName name of the table in database e attributes comma separated list of attributes to be displayed 145 ToolTips foluginl e template optional custom template must be in overriden toolTips plugin templates directory If not set generic LayerResult tp1 is used The template to use can also be set in renderResult method in PHP code if QueryableLayer
22. blocks overview zIndex Block margins are used to position a given block Horizontal positioning is achieved by specifying the horizontalBasis the side of the document leftlright used as a reference and the horizontalMargin the latter value tells how far in distUnit the block will be spaced from the reference line For instance to position a block at 10mm from the document right side use the following configuration general distUnit mm feos 99 PDF Export pl gi j blocks myBlock horizontalBasis right blocks myBlock horizontalMargin 10 If you want to horizontally center a block it is simply done using blocks myBlock hCentered true Block centering overloads any other kind of positioning margin Vertical positioning is achieved in the same way substitute the dedicated keywords The inFlow parameter defaults to true except if set differently in the template block As aresult blocks with the same z Index will be positioned right below the first block preserving the left side alignment To cancel this behavior set inFlow to false In that case the given block will be positioned related to the previous block using margin or centering ways 12 3 4 3 Text Blocks Text blocks are boxes with a textual content The text is set in the content parameter in case of a static block content has to be left blank for visitor set blocks such as title or note Text formatting is achieved using usual CSS like para
23. e frozen if true layer is displayed in tree but attribute selected cannot be modified e selected if true layer is displayed as selected in tree e unfolded if true layer tree is displayed unfolded layer groups lt complexType name ArrayOfLayerState gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types LayerState gt lt restriction gt lt complexContent gt lt complexType gt e array list of layer states lt complexType name InitialLocation gt SEULS lt element name bbox type types Bbox gt lt all gt lt complexType gt e bbox initial bounding box see Section 1 1 2 Shapes for a description of type Bbox lt complexType name InitialMapState gt 189 Calling Plugins lt all gt lt element name id type xsd string gt lt element name location type types InitialLocation gt lt element name layers type types ArrayOfLayerState gt lt a lis lt complexType gt e id initial state ID e location initial location e layers list of layer states lt complexType name ArrayOfInitialMapState gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types InitialMapState gt lt restriction gt lt complexContent gt lt complexType gt e array list of initial states lt complexType name MapInfo gt lt sall gt
24. e to reserve A3 format to editors or admins use formats A4 allowedRoles editor admin e to set a resolution limit for anonymous users when printing in A3 you can define 2 similar formats with different maxResolution and allowedRoles properties general formats A4 A3 A3full alll formats A4 label A4 formats A4 bigDimension 297 formats A4 smallDimension 210 formats A3 label A3 formats A3 bigDimension 420 formats A3 smallDimension 297 formats A3 maxResolution 150 formats A3 allowedRoles anonymous formats A3full label A3full formats A3full bigDimension 420 formats A3full smallDimension 297 formats A3full allowedRoles loggediIn Note that all formats that may be used must any way be specified in general formats e to hide a block for non admin users use blocks overview allowedRoles admin 106 Views Tphiiein 13 Views l plugin 13 1 Introduction Views are recordings of CartoWeb maps states at a given moment One may see them as a kind of bookmarks while browsing maps in CartoWeb interface users can save the current state map extent selected layers queries annotations etc under a label of their choice It is then possible to access later those saved states Views are shared among users and are in the current version available to every user Access to views edition functionalities creation modification deletion can be restricted to some categories of users
25. entry points Thus they can interact at various level of the application To determine what plugins must be called at what moment and to perform what action plugins must implement one or more of the CartoWeb plugin interfaces according to the object oriented programing meaning The interfaces define methods that will be triggered by the main program during its execution For example you can take a look at the following simplified cartoclient doMain method main program defined in client Cartoclient php private function doMain Sthis gt callPluginsImplementing InitUser handleInit Sthis gt getMapInfo if Sthis gt isRequestPost 219 New Plugins Sthis gt cartoForm Sthis gt httpRequestHandler gt handleHttpRequest Sthis gt clientSession Sthis gt cartoForm Srequest new FilterRequestModifier _REQUEST Sthis gt callPluginsImplementing FilterProvider filterPostRequest Srequest Sthis gt callPluginsImplementing GuiProvider handleHttpPostRequest Srequest gt getRequest else Srequest new FilterRequestModifier _REQUEST Sthis gt callPluginsImplementing FilterProvider filterGetRequest Srequest Sthis gt callPluginsImplementing GuiProvider handleHttpGetRequest Srequest gt getRequest SmapRequest Sthis gt getMapRequest t SmapRequest t his gt mapResult t his gt call
26. gt zoomPoint LocationRequest gt bbox gt minx 500000 211 Calling Plugins Srequest gt locationRequest gt zoomPointLocationRequest gt bbox gt miny 100000 Srequest gt locationRequest gt zoomPointLocationRequest gt bbox gt maxx 600000 Srequest gt locationRequest gt zoomPointLocationRequest gt bbox gt maxy 200000 Srequest gt locationRequest gt zoomPointLocationRequest gt point gt x 550000 Srequest gt locationRequest gt zoomPointLocationRequest gt point gt y 150000 Srequest gt locationRequest gt zoomPointLocationRequest gt zoomType ZOOM_SCALE Srequest gt locationRequest gt zoomPointLocationRequest gt scale 200000 Now request object is ready SOAP method is called try result Sclient gt getMap S request print r Sresult Gatch YSeapranlt Stanit 4 peime SheewwiheSsesiunlicsiciestineyp B Result is shown below It includes relative paths to generated images and new bounding box computed from requested scale stdClass Object timestamp gt 1107925732 serverMessages gt Array imagesResult gt stdClass Object className gt ImagesResult mainmap gt stdClass Object isDrawn gt 1 path gt images 110839565198671 jJpg width gt 500 height gt 500 format gt keymap gt stdClass Object isDrawn gt path gt width g
27. postgresql localhost MYDB user MYUSER amp password MYPASSWORD purgeOnConfigurationChange where e Xmx1G tells Java to use a maximum of Gb for the aggregation This should be enough even for very large amount of data e iniFilename name of INI configuration file e tableName table prefix Allows to use different table prefixes in order to have several environments in only one database For instance use this option if you want to import both CartoWeb and WMS logs in the same database e db connection string e purgeOnConfigurationChange tells the application to drop all aggregated data when a change was found in a report configuration Without this option a warning is displayed and old data is not erased Warning you will NOT be able to get report aggregated data again if original raw data has been purged 30 1 5 Purging the Data Raw report data is purged using the following command remove end of line backslashes on Windows java Xmx1G cp target stats standalone jar org cartoweb stats purge Purge tableName stats nbDays 100 db jdbc postgresql localhost MYDB user MYUSER amp pas sword MYPASSWORD where e Xmx1G tells Java to use a maximum of Gb for the aggregation This should be enough even for very large amount of data e tableName table prefix Allows to use different table prefixes in order to have several environments in only one database For instance use this option i
28. security_view admin won some_specific_parameter value 50 Layers coreplugin data_encoding value_iso Uiel eneee E string Pibjstring mask_transparency 50 Uniesie terolkore Ain Zoo 0 area_fixed_value 10 END eos END The metadata key exported_values is a bit special It gives the list of metadata keys coma separated which will be transmitted to the client This is required for the metadata keys describing layer security for instance as they are used on the CartoClient 6 3 2 Metadata in layers ini The configuration file layers ini may also contain metadata key value pairs This is needed for LayerGroup objects as these have no counterparts in the mapfile For simple layers the metadata specified in the layers ini take precedence over the values from the mapfile For each layer object in the layers ini file the following syntax is used to set metadata layers layerId metadata METADATA value For instance layers group_admin className LayerGroup layers group_admin children grid_defaulthilight layers group_admin metadata security_view admin layers foo className Layer layers foo metadata data_encoding value_iso Note It is possible to specify minScale and maxScale attributes as layers ini metadata for layerGroups items The equivalent mapfile metadata is not available for layers In that case simply use mapfile MINSCALE and MAXSCALE attributes
29. 1 or 2 e refMarksSize size of reference marks Size is fixed and won t change with scale e refMarksColor color of reference marks comma separated R G and B values e refMarksTransparency transparency of reference marks e refMarksOrigin origin for reference marks comma separated X and Y values typically 0 0 e refMarksInterval maxScale maximum scale for corresponding interval e refMarksInterval interval real interval between two reference marks comma separated X and Y values e refLinesActive if true will display reference marks on page borders e refLinesSize size in pixel of reference marks on page borders e refLinesFontSize size of font for reference marks on page borders e scaleUnitLimit scale above which the scalebar use km below m is used 7 3 Related Elements Elsewhere The maximal extent of the geographical zone is set by the EXTENT command in the mapfile The initial bbox is set by the active initialMapState It is to be configured in the myMap ini file using the following syntax mapInfo initialMapS tates initialMapStateld location bbox xmin ymin xmax ymax 62 Image Format Options coreplugin images 8 Image Format Options images coreplugin The plugin images is the core plugin that deals with the formatting options for the main map It handles the size of the image and its filetype 8 1 Client side Configuration 8 1 1 Main Map Options Here are t
30. 3 Hilight Configuration for more information Results are returned and displayed using Tables plugin See Section 9 1 2 Tables Configuration for more information 9 1 Client side Configuration 9 1 1 query ini Here are the options that can be set in client s query ini e persistentQueries if true queries will be persistent If false selection is lost after next page reload Note that persistency will work only with layers with id_attribute_string set see Section 9 3 Related Elements in Mapfile e displayExtendedSelection if true shows form for selection extended functions This form is mainly used by developers see TODO link to developer s doc e queryLayers the comma separated list of layers which will appear in the extended selection form If this list is absent all msLayers appear in the form e returnAttributesActive if true the layers attributes can be requested If false only object IDs will be returned default false e defaultPolicy can be either POLICY_XOR POLICY_UNION POLICY_INTERSECTION or POLICY_REPLACE Defines how new selected objects are mixed with previous ones default POLICY_XOR e defaultMaskmode if true selected objects are highlighted in mask mode default false See also Section 9 3 3 2 Mask Mode e defaultHilight if true objects are highlited default true 66 Queries coreplugin query e defaultAttributes if true the layers attributes are retur
31. 3 Server Configuration Files 4 3 1 Introduction This page describes the configuration options of the CartoServer There is a global configuration file server ini directly in the server_conf folder Then all specific configurations are stored in individual folders Each configuration contains e a Mapserver mapfile myMap map e its annexes symbols fonts images data e a main configuration file myMap ini that must have the same name as the map e smaller configuration files for the plugins By default CartoWeb comes with a fully functional test folder that includes the necessary geometrical datas and allows one to run an out of the box demo 4 3 2 Main Server Configuration File server ini e imageUrl string Path where cartoserver generated images can be accessed e reverseProxyUrl string The url of the reverse proxy if used 4 3 3 Map Configuration Files 4 3 3 1 Introduction The CartoServer has the ability to contains several different maps These maps are represented by the mapserver mapfile the CartoWeb configuration file for the map and each plugins configuration 38 Configuration Files The file that contain the configuration information related to a map is located in the same directory as the mapfile but has a ini extension These files are in the directory server_conf lt myMap gt 4 3 3 2 lt myMap gt ini e mapInfo loadPlugins list list of server plugins to load in additio
32. 56 78 Shbox gt S eELrromZPoi nts Spointl Spornt2 this gt assertEquals 12 bbox gt minx this gt assertEquals 34 bbox gt miny this gt assertEquals 56 bbox gt maxx this gt assertEquals 78 bbox gt maxy Each function with name starting with test will be considered as a test case by the automated test runner You may also want to use functions set Up and tearDown to initialize and clean a test environment Method assertEquals tests if two values have the same values If not the test will be added to the final report as failure As stated previously all test classes have to belong to a test suite The next example shows how such a test suite is built by grouping all tests together in the suite method 258 Unit Tests Example 7 2 Test suite AllTests php lt php require_once PHPUnit2 Framework TestSuite php require_once CartoclientTest php require_once CartoserverServiceTest php class client_AllTests publies catre runc Erom surtedy 4 Ssuite new PHPUnit2_Framework_TestSuite Ssuite gt addTestSuite client_CartoclientTest Ssuite gt addTest Suite client_CartoserverServiceTest return Ssuite All test suites are then grouped together into the root test suite It is shown there for information Example 7 3 Root directory s AllTests php lt php require_once PHPUnit2 Framework TestSuite php require_once client AllTests php require
33. Basically a role can be any string the application will only use them as a way to check if a feature is allowed or not However a set of role name have a special meaning They are described below 116 Security Configuration Special Roles all This role belongs to any user It is useful in case a permission should not be restricted access loggedIn This role is given to all users who have logged in the application It means they are identified to the system with a username anonymous This role is given to all users not known to the application This role is attached to anyone who has not yet entered her username and password Example 15 1 Special Role Name Usage general allowedRoles loggediIn 15 3 Global CartoWeb Permissions The whole application can be denied access to anonymous users only authenticated or a set of users can access the application Anonymous users arriving on the main page will see a login dialog page if they have no rights to view the page if the auth plugin is not loaded they will simply see a denied page This feature can be parametrized on the CartoClient in the client ini configuration file e securityAllowedRoles list List of roles which are allowed to access the cartoweb Set to all if no if no restriction is given see Section 15 2 2 Special Role Names for typical predefined roles Example 15 2 Global Permissions Usage securityAllowedRoles loggedIn 15 4 Plug
34. LayersRequest or extended class name if project implements an extension e layerlds list of layers to include in map generation see Section 1 1 1 Simple Types for a description of type ArrayOfLayerld e resolution MapServer resolution Set this to null if you want to use default resolution e switchld current switch ID 1 3 3 2 Layers Result lt complexType name LayersResult gt lt all gt lt element name className type xsd string gt lt falis lt complexType gt e className LayersResult or extended class name if project implements an extension 1 3 4 Layer Reorder The LayerReorder plugin handles layers reorder selection Its request object includes list of layerlds rightly ordered to be displayed on main map This plugin has no specific result object 1 3 4 1 Layer Reorder Request lt complexType name LayersRequest gt lt all gt lt element name className type xsd string gt lt element name layerIds type types ArrayOfLayerlId gt lt all gt lt complexType gt e className LayerReorderRequest or extended class name if project implements an extension e layerlds list of layers to include in map generation rightly ordered from top to bottom see Section 1 1 1 Simple Types for a description of type ArrayOfLayerld 198 Calling Plugins 1 3 5 Location The Location plugin handles position and moves on the map Its request process includes different positio
35. SEARCHDSN Do not forget to add EncoderClass myencoding_context EncoderISO Or any other context z ia yown Chrent sane selrent any config Adresses_init_town provider type table config Adresses_init_town provider table addresses config Adresses_init_town provider aliases adr_town town config Adresses_init_town provider id adr_town config Adresses_init_town provider columns adr_town config Adresses_init_town provider sortColumn adr_town config Adresses_init_town provider sortDirection asc config Adresses_init_town formatter type smarty config Adresses_init_town formatter template init_adresse_town_select config Adresses_init_street provider type table config Adresses_init_street provider table addresses 155 Search plugin config Adresses_init_street provider aliases adr_street street adr_town town config Adresses_init_street provider id adr_street config Adresses_init_street provider columns adr_street config Adresses_init_street provider sortColumn adr_street config Adresses_init_street provider sortDirection asc config Adresses_init_street provider where adr_town like adr_town_init config Adresses_init_street formatter type smarty config Adresses_init_street formatter template init_adresse_adr_street_select config Adresses provider type table config Adresses provider table addresses config Adresses provider aliases adr_num num adr_street street adr_zip zipc
36. The default configuration only allows admin roled users to perform view edition 13 2 Views Configuration The views device consists of two parts e a main controlling system that handles views detection loading recording and storage e a views plugin that provides a graphical interface for performing views loading and edition This plugin is not mandatory to have views working but greatly enhances the device usability 13 2 1 Views Plugin No configuration is required for that plugin However it still needs to be activated using the client_conf client ini loadPlugins parameter For instance loadPlugins auth exportPdf views 13 2 2 Main Views Controller Main views controller configuration is done in the client_conf client ini file The dedicated parameters are e viewOn boolean true l false activates deactivates the main view controller Views plugin will not work if the controller is off e viewStorage string file l db tells what storage container must be used file or database e viewablePlugins comma separated list of strings list of plugins that must have 107 Views Tphiiein their data saved in views Note that viewable plugins must implement the Sessionable interface If you wish to save data from extended plugins you must add the extended plugin to the list not the standard one eg myLocation instead of location e viewMetas comma separated list of strings list of metad
37. You only need to set the text formatting and row height as for a table block Legend blocks does not provide any table like headers or caption 104 PDF Export plugin You can avoid that a given set of layers be displayed in the legend blocks no change on the maps by listing the forbidden layers ids in the legend block content won parameter prefixing each layer id with an exclamation point For instance blocks legend content background layer3 Note the double quotes around the content value that contains special characters such wen as Two behavior are offered to the visitor embedding the legend block in the map or printing it in a separated page First case is OK when there is little legend items to print block is limited to one column whereas the second possibility enables to display lots of legend items using several columns if needed In the map embedded case if the overview map is printed the legend block width will be automatically set to the overview width value For instance blocks legend type legend blocks legend zIndex 1 blocks legend weight 40 blocks legend fontSize 8 blocks legend height 5 blocks legend width 50 blocks legend padding 1 5 blocks legend verticalMargin 10 blocks legend horizontalMargin 10 blocks legend content nix 12 3 4 7 North Arrow Block There is usually only one instance of north arrow block in a CartoWeb PDF document
38. activate the accounting plugin in your configuration This is done through the loadPlugins parameter of client ini and mapInfo loadPlugins of your server_conf lt mapId gt lt mapId gt ini file 19 1 2 client ini or server ini Here are the options that can be set on the client or server e account ingoOn boolean true l false sets whether accounting is enable or not e accountingStorage string file l db l db_direct controls how the accounting information is stored file means that accounting information will be stored in files named cart oweb3 www data accounting lt MAP_ID gt client server _accounting log where lt MAP_ID gt is the mapld currently used db means that accounting information is stored inside a database table This table can be created using the following command CREATE TABLE cw_accounting date timestamp info text The database to be used can be configured using the account ingDsn parameter See next item db_direct the information is stored inside a database table Unlike ab the data are not inserted in an unique columns but are directly splited Warning 132 Accounting plugin This mode can only be used if this client and the server are in direct mode See Section 4 2 client ini for more information about direct mode e accountingBasePath string Optional base path where to store the accounting log files This is only used when accountingStorage is set to
39. active by default for maximum performance Warning These parameters will be overrided by the profile parameter See Section 4 1 Common client ini and server ini Options 5 6 2 Client and Server Cache Options These parameters are available in client_conf client ini for client and server_conf server ini for server e noWsdlCache truelfalse disables the caching of wsdl ignored if useWsdl is false e noMapInfoCache truelfalse disables the caching of MapInfo requests 5 6 3 Server Cache Options 44 Caches Configuration These parameters are available in server_conf server ini e noMapResultCache truelfalse disables the caching of getMap requests e noSoapXMLCache truelfalse disables the caching of SOAP XML requests 45 Layers coreplugin 6 Layers coreplugin 6 1 Introduction Geographical data are most often apprehended as thematic layers you may have a layer Rivers a layer Aerial view a layer Average income just to cite a few examples Now the basic purpose of any viewer is to make these data available to users by allowing navigation within a layer as well as comparison between layers A way to organize the layers is thus mandatory if an user friendly application is to be developed In CartoWeb the files that contain the configuration instructions for the layers are on the server side in the directory server_conf lt myMap gt Usually this directory is part of a projec
40. avoid absolute paths as much as possible CartoClient and CartoServer may be relocated with very minimal even none reconfiguration 6 2 2 Extract and Run Deployement It should be possible to extract the archive launch a script edit few options and be ready to use the application with the built in data set see test mapfile 6 2 3 Development Configuration Developers should absolutely set the following variables to true in their config on both client and server sides Warning These parameters will be overrided by the profile parameter See Section 4 1 Common client ini and server ini Options e showDevelMessages true e developerIniConfig true 6 2 4 Unit Tests Code should produce no notices before any CVS commit Code should pass all tests This also means that the developpers should add and run unit tests for every new 249 Code Convention feature they add See Chapter 7 Unit Tests 6 3 PHP 6 3 1 Coding Style Developers should use the PEAR coding standards as the coding style reference in CartoWeb with some exceptions Have a look at http pear php net manual en standards php Following are briefly described some guidelines to respect 6 3 1 1 Indent Developers should respect some indentation conventions when writing PHP code in CartoWeb e 4 spaces indentations are recommended e the use of tabs for indentation is prohibited use space instead select the appropriat
41. be needed when using for instance sub projects This string is an ulimited comma separated list of t ype value couples Three types are available o str a constant string o conf uses value of one of the current client ini configuration parameters o env uses value of given PHP environment variable if set For instance sessionNameSuffix strstote conisprofi be envemykavvar sessionNameSuffix WISE SOO SER Dan env CW3_APP_ID sessionNameSuffix Tools configuration e jnitialTool indicates which tool is activated when in initial state If not specified the first tool in the toolbar is activated Possible values are zoomin zoomout pan query distance surface e toolbarRendering indicates how to render tools selectors icons within toolbar Possible values are radio default outline swap If radio an HTML radio button appear nexts to each tool icon If outline active tool icon is outlined with a 36 Configuration Files colored border If swap an alternate icon over is displayed to mark the active tool Project handling configuration e showProjectChooser truelfalse Shows a drop down list for selecting the active project e availableProjects list List of the project to show in the drop down list If not set all projects found will be used Plugins configuration e loadPlugins list list of client plugins to load in addition to the core plugins Note that
42. be used for example to let the user add a WMS layer restrict data to be exported to the user change the color of layers etc The plugin has only a server part and only a public method public function updateMap BasicOverlay Soverlay The Soverlay argument is either a MapOverlay or a LayerOverlay instance it represent respectively a mapfile or a layer Customizable elements are e ColorOverlay e StyleOverlay LabelOverlay e ClassOverlay e MetadataOverlay e LayerOverlay e MapOverlay The organization of these elements are the same as the mapfile structure a MapOverlay contains zero or many LayerOverlay who cantains zero or many MetadataOverlay etc None of theses elements or instance variables are mandatory you just need to provide informations about property you want to search update insert or delete For each of theses mapfile elements the developer have to provide an action by setting the action instance variable The action set the behavior of the element during the mapfile update process action is one of e BasicOverlay ACTION_SEARCH this action search or create the element e BasicOverlay ACTION_INSERT insert the element at a given position or at the end if not specified e BasicOverlay ACTION_REMOVE remove the element e BasicOverlay ACTION_UPDATE update or create the element If no action is specified the default action is BasicOverlay ACTION_UPDATE 240 Dyn
43. between CartoWeb and MapServer are achieved using the MapServer PHP Mapscript http mapserver gis umn edu doc44 phpmapscript class guide html module MapServer must be installed prior to any CartoWeb setup MapServer resources e MapServer HomePage http mapserver gis umn edu e MapServer Download http mapserver gis umn edu dload html e MapServer Documentation http mapserver gis umn edu doc html e MapServer PHP Mapscript Class Reference http mapserver gis umn edu doc44 phpmapscript class guide html 3 3 Web Service Architecture SOAP One of the CartoWeb specificities is its ability to work along a client server model as well as a stand alone application Thus it is possible to host a CartoWeb client known as CartoClient on one machine and have it requesting a CartoWeb server known as CartoServer located on a separated server A CartoServer can be called by several CartoClient simultaneously On the other hand a CartoClient can query several CartoServer for instance in the frame of different projects Section 3 4 2 Projects 10 Architecture CartoWeb offers two access modes e as a web service CartoClient and CartoServer then interact using remote procedures based upon SOAP http www w3 org TR soap12 e as a standalone application Procedures are then performed directly between CartoWeb components bypassing the SOAP calls Direct mode SOAP mode 11 Architecture 3 aa
44. by clicking on a HTML print link or button and opens a new browser window It is specially useful to quickly basic HTML layout same maps used than in viewer display raw maps in order to print them No configuration is required To enable or deactivate this plugin simply add or remove exportHtm1 from the loadPlugins parameter in client_conf client ini For instance Peel exportHtml is listed as activated loadPlugins auth outline exportHtml fees To customized the exported page layout simply edit the plugin template file exportHtml templates export tpl It is recommended not to modify the regular template file but to override it in a project version of the exportHtm1 plugin For more info about projects see Section 2 4 Projects To get advanced printing capabilities rather use the CartoWeb PDF export plugin export Pdf described in next chapter 11 3 CSV Export The exportCsv plugin enables to export tabular data from various queries results in a comma separated CSV or assimilated text format The returned CSV file can then be opened and edited in any text editor or rendered as a table document in 81 Exp ort Plugins plugin exportCsv exportHtml exportDxf exportRtf exportImg OpenOffice or MS Excel For instance Td Object Description ae A Mjatiayes CSV export links are generally displayed in the viewer at the bottom of each queries results tables Each link can only export a single
45. call getExportResult and generate export in an Export Output object 2 4 1 3 ExportConfiguration Export configuration objects contain information on what is needed by export plugin to generate output For instance for a CSV export no images are needed and it would be a waste of time to generate them Configuration is set in method getExport then passed to method getExportResult in order to get modified result Configuration is used by plugin to know how to modify request to retrieve useful data 2 4 1 4 Exportable Interface Exportable interface declares a method adjustExportMapRequest which modifies a standard map request to a special export request For instance plugin Image uses ExportConfiguration object to know if maps are needed by export plugin If not image request is modified 2 4 1 5 Example Plugin exportCsv is a good simple example of export plugin Configuration is filled in method get Configuration No images are required to output a CSV file protected function getConfiguration Sconfig new ExportConfiguration j Sconfig gt setRenderMap false Sconfig gt setRenderKeymap false Sconfig gt setRenderScalebar false 228 New Plugins Result rendering is done in method getExport Note that no calls to methods get LastMapRequest Or adjustExportMapRequest are needed as those calls are handled by method getExportResult protected function getExport Sthis g
46. can be set zoomFactor the zoom factor to use whan scaleModeDiscrete is set to false noBboxAdjusting If set to true all data contained in the initial extent mapfile is visible on the full extent first map This case is the default mapserver behavior If set to false default the user won t be able to see anything outside the initial extent even on full extent map scales value 0 1 2 available value of the scale in discrete mode scales label 0 1 2 label of the scale to be displayed in the dropdown list on the client scales visible 0 1 2 boolean if true the scale is displayed in the dropdown list If false this scale can only be selected by zoom in zoom out Default is true shortcuts label 0 1 2 label of the shortcut appears in the direct access dropdown list on the client shortcuts bbox 0 1 2 geographic bbox of the shortcut recenterMargin margin to add around the centered on object valid for lines and polygons Expressed in percent of the width height of the object If not set 61 Navigation coreplugin location recenterDefaultScale is used e recenterDefaultScale fixed scale to use when recentering Mandatory when centered on object is a point e refMarksSymbol symbol used to draw lines for reference marks typically an ellipse e refMarksSymbolSize size in pixel of symbol used to draw lines for reference marks typically
47. can find a version here http www kyngchaos com software unixport postgres or find some basic compilation instructions in French here http www davidgis fr documentation win32 html apa html o On Debian you need the following packages cmake g libboost graph dev postgresql server dev 8 1 it may depend of your version of Postgres Then you can execute the cmake make and make install given in the pgRouting install instruction You may require administrative right to execute correctly these commands Execute the routing_core sql and routing_core_wrappers sq files to install the 166 Routing plugin functions in your database by typing pecil d ceno Plugins T Touti ne Cors sql These file are in the pgRouting installation package in folder core sql Import Europe road geodata in PostGIS create its graph structure and configure plugin routing database To do so simply execute the demo_routing sql file located in the lt cARTOWEB_HOME gt projects demoPlugins server_conf sql directory You may need to uncompress the file with gunzip before usage Note These steps are detailed in the next section Edit the cartoweb3 projects demoPlugins demo properties file and uncomment the line beginning with ROUTING_PLUGINS e Execute cw3setup php file with the config from file option as described in the previous chapter 27 2 2 Detailled installation steps The routing modu
48. cartoclient tpl 11 5 RTF Export The Rich Text Format RTF is a document file format used for cross platform document interchange Most word processors are able to read and write RTF documents RTF should not be confused with enriched text format which is a completely different specification The main goal of The ExportRtf plugin is to allow users to create templates directly in a word editor The plugin compatibility has been tested on e Office Word 2004 and later Mac Windows e OpenOffice 2 0 and later e NeoOffice Mac Known incompatibilities e Pages Mac e TextEdit Mac images are not supported Supported image formats set in the mapFile e JPEG GIF e PNG 83 Exp ort Plugins plugin exportCsv exportHtml exportDxf exportRtf exportImg 11 5 1 Setting up the template Open your editor and do your layout setup by opening the exportRtf rtf file in the plugin template folder Note Please take into consideration that the RTF template will be generated by your editor You may encounter some compatibility issues For example an RTF template done with Word can be open with OpenOffice without too many difficulties while an RTF generated with OpenOffice may not open correctly with Word You can insert different fields in the template by typing keywords inside triple brackets For Example TITLE TITLE stands for a specific title of the form e MAP stands for the map The ma
49. d demo_plugins f spatial_ref_sys sql Note 25 Installation psql is a terminal based front end for PostgreSQL It enables you to type in queries interactively issue them to PostgreSQL and see the query results Don t forget to specify its location on your system to use it If the wpostgis sql and spatial_ref_sys sql files aren t in the current directory you have to specify their path Create tables used by the locate plugin to allow you to do a recenter on features by searching their names To do so you should export the free downloadable layers airport agglo district and town in PostgreSQL PostGIS tables by typing the following command S shpepgsql l a eroface shp Alrport gt tmp airport sql psql d demo_plugins f tmp airport sql S she2pgsaql i builtupa shp agglo gt tmp agglo sql S psql d demo_plugins f tmp agglo sql S shp2pgsql I polbnda shp district gt tmp district sql S psc cl Cenco plugins f imps cdisirict seq shp2pgsql I mispopp shp town gt tmp town sql psql d demo_plugins f tmp town sql n Note shp2pgsql is a command line program that exports a shapefile into SQL commands Don t forget to specify its location on your system to use it You have to specify the path to the shapefiles if they aren t in the current directory Execute cw3setup php file with the fetch demo option to download geographical data cw
50. delete the existing cartoweb3 folder Be sure to backup the files and projects you wish to keep Note See note on Section 1 1 3 2 6 1 Install Notice here the delete existing parameter Needed here because cartoweb3 already exists Without it the cw3setup script issues a warning and stops 1 1 3 2 7 Update CartoWeb from CVS To keep your CartoWeb up to date with the development version simply type the following command in the Cartoweb root folder cvs d pserver anonymous dev camptocamp com var lib cvs public update 21 Installation Warning This may have some serious effects on your existing developments it is recommended you backup the CartoWeb root folder and all subforders before execution 1 1 4 Windows Installation 1 1 4 1 Windows Install with Win32 Installer Recommended e Download the MS4W installer at http www maptools org dl ms4w ms4w 2 2 4 setup exe Double click on the executable to launch it This will install Apache with PHP5 2 3 4 10 2 CGI and MapScript e Download the CartoWeb installer at http cartoweb org downloads html Double click on the executable to launch it This will install CartoWeb You can also optionaly install the cartoweb demo data and Gettext for internationalisation e You need to reboot Windows after the installation if you want to use the internationalisation system with Gettext e That s it Point your browser to http localhost cartoweb3 htdoc
51. different for each instance of auto layer e printIndex adds the current auto layer index Must be used in auto layer contents e printName adds the current auto layer full name Must be used in auto layer contents e getIndex returns the current auto layer index It can be useful for instance in conditional statements Must be used in auto layer contents e includeFile path adds the content of another PHP mapfile template Here is an example MAP NAME MyMapfile EXTEN 110 iL 110 aL 0 oo 54 Layers coreplugin lt php printLayer myAutoLayer_ lt lt lt AUTOLAYER This is my auto layer with index lt php printIndex gt LAYER NAME lt php printName gt TYPE POLYGON Hoos CLASS NAME MyClass STYLE COLOR lt php if getIndex index2 print 200 200 255 Gules joresisie WAG Ss aoe ess END END END AUTOLAYER i gS END 6 6 3 Batch Script Script makemaps php located in directory scripts generates mapfiles out of mapfile templates for all projects Mapfiles are generated in the same directory The script must be called once during installation and then each time a change is made to the mapfile templates It uses filelayers ini to find out which auto layers are needed For instance with the following layers ini myAutoLayer_index3 won t be generated autoLayersIndexes indexl index2 index3 layers layerl className LayerGroup layers layerl
52. e horizontalMargin 10 e verticalMargin 10 e formats NULL e defaultFormat NULL e resolutions 96 e defaultResolution 96 e activatedBlocks NULL e filename map date dMY His pdf e overviewScaleFactor 10 e overviewColor NULL e overviewOutlineColor red e output redirection e allowedRoles empty ie nobody e importRemotePng false e extraFonts NULL Tip Should you use the rotate guiMode do not forget to add a general PROJECTION tag in your mapfile For instance PROJECTION init epsg 21781 END 12 2 2 Formats Configuration Formats are described as a set of formats sub objects For instance formats A4 bigDimension 297 formats A4 smallDimension 210 formats A3 label A3 formats A3 bigDimension 420 Format ids A3 A4 etc must match those listed in general formats e formats lt format_name gt labei string user friendly name Is translated using Cw3118n device Chapter 17 Internationalization e formats lt format_name gt bigDimension float largest sheet side in distUnit e formats lt format_name gt smal1Dimension float smallest sheet side in distUnit 90 PDF Export fitigiat e formats lt format_name gt horizontalMargin float optional if set overrides general horizontalMargin for the given format e formats lt format_name gt verticalMargin float optional if set overrides general verticalMargin for the given format e formats lt format_na
53. e points list of points Line or Polygon lt complexType name ArrayOfShape gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types Shape gt lt restriction gt lt complexContent gt lt complexType gt e array list of shapes 1 1 3 Tables These types define a table structure used in particular in Query plugin see 186 Calling Plugins Section 1 3 6 Query lt complexType name TableRow gt lt all gt lt element name rowId type xsd string gt lt element name cells type types ArrayOfString gt lt all gt lt complexType gt e rowld row ID e cells cell contents see Section 1 1 1 Simple Types for a description of type ArrayOfString lt complexType name ArrayOfTableRow gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types TableRow gt 4 Vestriction gt lt complexContent gt lt complexType gt e array list of rows lt complexType lt all gt lt element lt element lt element lt element lt element lt element lt element lt element lt element lt fall gt name Table gt name tableId type xsd string gt name tableTitle type xsd string gt name numRows type xsd integer gt name totalRows type xsd integer gt name offset type xsd integer gt name
54. fields o an identifier the value of the id_attribute_string field of the layer in order to be able to recenter on the feature o a label a name for the feature to recenter on 135 AJAX 21 AJAX 21 1 Introduction CartoWeb implements an AJAX layer enabling asynchronous update of the HTML GUI 21 1 1 Browser Compatibility Browser compatibility e Mozilla 1 7 e Firefox 1 0 7 e Internet Explorer 6 Safari 1 3 2 Known browser incompatibility e Opera e Internet Explorer 5 for Mac e Konqueror 21 2 Make Your Project AJAX Enabled To enable your project with AJAX it is recommended that you build your project based on demoCW3 or test_main projects CartoWeb version 3 3 0 or higher A project based on demoCW3 won t need any tuning A project based on test_main will require the following e Enable AJAX in your client ini or client ini in If you have a project running since version 3 2 0 or before and want to enable AJAX you ll need to e Enable AJAX in your client ini or client ini in e Adapt your cartoclient tpl mainmap tp1 and all redefined plugin templates if they are based on test_main or demoCW3 project templates from CartoWeb version lt 3 2 0 136 AJAX 21 2 1 Client ini Configuration Add the ajaxOn directive and set it to true in your project yourProjectName client_conf client ini or project yourProjectName client_conf client ini in ajaxOn t
55. file e accountingDsn string DSN Data Source Name used to specify which database to use for storing accounting information This is only used when account ingStorage is set to db or db_direct Note Do not forget to enable the accounting plugin if you want to use this feature 19 2 Managing Accounting Information 19 2 1 Accounting Log Files Administration Accounting log file are used to store one line of accounting information each time a request is made on CartoWeb The log files will grow with time as more and more data are stored inside This means that special care has to be taken by the CartoWeb administrator to avoid that the log file eats all the available free disk space It exists several tools which can be used to manage the log files and to avoid it takes too much place For instance the Logrotate software can be used to rotate the log files regularly Warning Activating accounting and not taking care of log file management can slow down or interrupt CartoWeb good working if the log file becomes too large 133 Locate hitii 20 Locate l plugin 20 1 Introduction The locate plugin deals with autocompletion of input fields used to recenter on a feature on the map It is based on AJAX requests When a few characters have been typed in the dedicated input field an AJAX request is processed on the database defined by its DSN The first results beginning with these characters are display
56. gt lt attribute ref encll arrayType wsdl arrayType types TableGroup gt lt restriction gt lt complexContent gt lt complexType gt e array list of table groups lt complexType name TableFlags gt lt all gt lt element name returnAttributes type xsd boolean gt lt element name returnTable type xsd boolean gt lt all gt lt complexType gt e returnAttributes if true will return attributes row cells in addition to row IDs e returnTable if false won t return any table information This can be useful for instance when hilighting an object on which no information is needed 1 2 Call to getMapInfo 188 Calling Plugins This method returns server configuration which includes layers initial states and other plugin specific configuration Variables returned by this method are set in server configuration files described in Part II User Manual 1 2 1 Global Server Configuration This includes layers configuration and initial states lt complexType name LayerState gt lt all gt lt element name id type xsd string gt lt element name hidden type xsd boolean gt lt element name frozen type xsd boolean gt lt element name selected type xsd boolean gt lt element name unfolded type xsd boolean gt lt all gt lt complexType gt e id layer state ID e hidden if true layer isn t displayed in tree and attribute selected cannot be modified
57. gt cell_value_l1 new_column_2 gt cell_value_2 Parameter columnPosition indicates where the new columns must be inserted It should be an instance of class ColumnPosition Positions can be absolute or relative with a positive or negative offset Sposition new ColumnPosition ColumnPosition TYPE_ABSOLUTE 1 The new columns will be added after the first column Sposition new ColumnPosition ColumnPosition TYPE_ABSOLUTE 2 The new columns will be added just before the last column Sposition new ColumnPosition ColumnPosition TYPE_RELATIVE Neroulviinin iL 9 The new columns will be added just before column column_1 Sposition new ColumnPosition ColumnPosition TYPE_RELATIVE ik Yeo ui il p The new columns will be added just after column column_1 2 4 3 2 11 Column Adder Batch public function addColumnAdderBatch groupid StablelId ScolumnPosition newColumnIds SinputColumniIds callback Column adder rules used in batch mode allow to add one or more columns to the table while calculating values for all newly added cells Parameter newColumnIds should contain the list of new column IDs Values of columns given in parameter SinputColumnIds will be transfered to the callback method for cells content calculation Values for all rows are transfered at the same time Parameter callback should contain a pointer to a callback method with the following signature static function myCallbackMethod
58. gt tests for for tests specific to project lt project gt Inside these tests directories path hierarchy mirrors the existing hierarchy they are testing For instance the tests hierarchy for the core CartoWeb testing is the following client CartoclientTest php CartoserverServiceTest php AllTests php common BasicTypesTest php AllTests php coreplugins AllTests php plugins AllTests php For the test_main project the hierarchy is the following coreplugins AllTests php plugins AllTests php misc AllTests php Mise tests gt 257 Unit Tests Each directory including tests root directory has a file named AllTests php This is called a test suite It is used to run all tests of a specific directory ie package Warning All test case and test suite classes must have the name of their file relative path without extension with replaced by _ For instance class client_CartoclientTest file name must be lt cartoweb3_root gt tests client CartoclientTest php The following example shows a test in common BasicTypeTest php file Example 7 1 Simple test case BasicTypesTests php lt php require_once PHPUnit2 Framework TestCase php require_once CARTOWEB_HOME common basic_types php j class common_BasicTypesTest extends PHPUnit2_Framework_TestCase public function testBboxFrom2Points Sbbox new Bbox Spointl new Point 12 34 Spoint2 new Point
59. gt classes 0 gt index A ms_newShapeObj is created and the class index is fetched from the updat eMap return instance SmsLayer Sthis gt serverContext gt getMapObj gt getLayer S result gt layers 0 gt index SmsLayer gt addFeature f SmsLayer gt set status MS_ON This example also show that you can mix standard phpMapscript and mapOverlay code 3 2 3 Filter data Slayer new LayerOverlay Slayer gt name field Slayer gt data geom FROM SELECT gid geom name FROM fields WHERE farm_id farmId AS foo USING UNIQUE gid USING SRID 1 242 Dynamic mapfile modifications SmapOverlay S this gt serverContext gt getPluginManager gt mapOverlay SmapOverlay gt updateMap layer The para field of the fiela layer is update to only display some informations SfarmId is defined elsewhere In this case a much more clever solution is to use the filter attribute of the LayerOverlay object Slayer new LayerOverlay Slayer gt name field Slayer gt filter farm_id farmId SmapOverlay Sthis gt serverContext gt getPluginManager gt mapOverlay SmapOverlay gt updateMap Slayer 3 2 4 Debugging At any time you can see the result of the modifications by calling Sthis gt serverContext gt getMapObj gt save tmp debug map This will save the updated mapfile to tmp debug map 243 Using the Security Infras
60. influes on the order of the tool panels when displayed on screen tool_input_list and tool_output_list The script needs an input value and will return an output value The input value is retrieved from an html input element In the same way the output value is returned to an html input element The script needs as many input element id as initialised tools If two tools are initialised parameter tool_id_list tool_input_list must also contain two input id Ids are separated by comma and enclosed by quotes or simplequotes Example return_id_tool_4 return_id_tool_2 76 Annotation and Redlining iplug cout The first input id corresponds to the first tool id in tool_id_list A different id can be specified if the element storing the output value must be different from the element storing the input value The same rule applies to tool_input_list and tool_output_list See Section 10 5 5 Examples of Usage Each tool also have some particularities 10 5 3 1 ColorPicker When a color is selected the script will set the css property background color of a div in the template accordingly to the color picked The id of the div is based on the output element id if it specified if not the input element id is used to which a _d is added Example if the input element id is return_color_12 the id of the div used to display the color will be return_color_12_d 10 5 3 2 SymbolPicker When a symbol is selected the script
61. innerHTML pluginOutput htmlCode some_variable_name The answer sent by PHP is handled in handleResponse Here you recover the variables and htmlCodes The function updateDomElement will handle all the html insertion It takes 3 parameters e the target id of the existing element in your current html which will serve as container for the new content e the insertion methode always innerHTML e the new content 21 2 4 2 Ajax Action Triggering In this part you simply define all your actions and what to do before when and after the actions are triggered AjaxPlugins YourPlugin Actions always empty it only define a Actions object which will store our various actions AjaxPlugins YourPlugin Actions SomeAction buildPostRequest function argObject return AjaxHandler buildPostRequest ry onBeforeAjaxCall function argObject Logger note Output something in the JSTraceDebugger window callSomeJavascriptFunctions Tay onAfterAjaxCall function argObject Logger note Output something in the JSTraceDebugger window callSomeJavascriptFunctions by onBeforeAjaxCallGeneral function argObject Logger note Output something in the JSTraceDebugger window callSomeJavascriptFunctions j Ia 139 AJAX onAfterAjaxCallGeneral function argObject Logger note Output something in the JSTraceDebugger window callSomeJavascriptFunctions E oneCustomFunction functi
62. is extended See Section 23 3 2 Extending classes e geomColName optional name of the geometry column Default is the_geom e srid optional name of the projection system to use Default is 1 tooltips region label R gions tooltips region dsn pgsql www data www data localhost 5432 france tooltips region dbTableName region tooltips region attributes nom code tooltips region template layerResult_region tpl e timeoutBeforeHide optional The time in millisecond before the tooltips result box disappear if the user has not put the mouse cursor on it Set to 3000 by default This is a general parameter and it has a more common syntax timeoutBeforeHide 7000 23 3 Custom Tooltips 23 3 1 Templates Tip Make sure that the custom templates are in the templates folder in the toolTips plugin directory in your project 23 3 1 1 Main Template As for the other plugins templates can be overriden in the projects Then user can define a new layerResult tp1 template for all tooltips layers 23 3 1 2 Layer Specific Template One can also define a specific template for each layer It can be defined using the template parameter See Section 23 2 3 Configuration or in renderResult method in PHP code if QueryableLayer is extended see above 23 3 2 Extending classes If a class extending ByXyQueryableLayer with a name like LayerIdQueryableLayer exists it will be taken int
63. layer table at a time A few configuration parameters are available in client_conf exportCsv ini e separator indicates what character should be used to distinguish each tabular cell mn value Default is semi colon e textDelimiter tells what character should be used to delimit the text in each cell It is specially useful when the character used as the separator may be found within the cell content Default parameter value is double quote ie The alias is defined to overcome INI syntax issues e filename specifies the filename naming convention to use It can include the table name using the table keyword and the generation date under various formats Date formating is performed by indicating between a couple of brackets the keyword date followed by a comma and PHP date like date format see http php net date Default filename convention is date Ymd HiJ_ table csv which gives for instance 20050220 2021_myLayer csv e Ifthe charsetut fs boolean is set to true the result file will be UTF 8 encoded Else ISO 8859 1 encoding is used which is the default behavior After initial CartoWeb installation client_conf exportCsv ini is set as follows separator between each value default is en F en separator Gelimiter before and after each value default is double quote special characters double quote textDelimiter double quote file name format for exported CSV file default is t
64. layer3 layers layerId children switch2 layer2 layer3 layers layerId children switch3 Special suffix default can be used to define a default children list layers layerId className LayerGroup layers layerId children switch2 layer2 layer3 layers layerId children default The following layer group definitions are equivalent layers layerId className LayerGroup layers layerId children default layer4 layers layerId className LayerGroup layers layerId children layer4 6 2 4 1 Change Switch position in template By default the switch input is positionned above the layers tree If you wish to change its position simply place the switches variable somewhere else in your template If you are using AJAX you also need to define the switchTargetId parameter in client_conf layers ini e switchTargetId elementid the id of the element in the template containing the switches variable For example lt div id switchTarget gt Sswitches SHAS 49 Layers coreplugin 6 2 4 2 Define an existing switch as default switch If you do not wish to duplicate the default switch and the switch you want to use as reference default behaviour you can use the relatedDefaultSwitchId parameter e relatedDefaultSwitchId switchid the id of the switch you want to use as default switch you need to modify the switches tp1 template For example switches switchl label human switches switch2 label
65. listed in the tree and not individually selectable Default is false e layers layerld label string caption of the layer in the layer tree on the client this is a raw label before any internationalization The 118n scripts automatically include this label in the strings that can be translated e layers layerld icon filename filename of the static picto that illustrates this Layer in the layer tree The path is relative to myMap ini See also Section 6 4 Layers Legends for a description of the automatic legending process e layers layerld link url provides a link for the layer e g to some metadata makes the caption in the tree clickable e layers layerld rendering treelblocklradioldropdown indicates how to display the LayerGroup children o tree default value children layers are rendered below the LayerGroup with an indentation If children are not declared as frozen or hidden see Section 4 3 3 3 Initial Mapstates they will be preceded by a checkbox input A node folding unfolding link is displayed before the LayerGroup o radio quite similar to the tree rendering with radio buttons replacing checkboxes Only one child layer can be selected at a time o block children layers are separated as blocks separation medium depends on the template layout Note that the rendering will be applied to the children not to the LayerGroup itself which is not displayed at all o dropdown as for block re
66. name layerLabel type xsd string gt lt all gt lt complexType gt e layerld Layer Id e layerLabel label to be displayed This label is not yet translated using internationalization 1 3 Call to getMap For each plugin SOAP XML format are described for both server calls i e requests and server results 1 3 1 Global Structures Below is a description of general requests and results which include plugin specific ones 1 3 1 1 Global Request lt complexType name MapRequest gt lt eul il lt element name mapId type xsd string gt elements specific to plugins lt all gt lt complexType gt e mapld map ID ie project name and mapfile name separated by a point 1 3 1 2 Global Result lt complexType name Message gt lt all gt lt element name Channel type xsd integer gt lt element name message type xsd string gt lt all gt lt complexType gt e channel type of message 1 end user 2 developer e message text of the message lt complexType name ArrayOfMessage gt lt complexContent gt 195 Calling Plugins lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types Message gt Testrict von gt lt complexContent gt lt complexType gt e array list of messages lt complexType name MapResult gt lt all gt lt element name timestamp type xsd integer gt lt element name serverMessages
67. note copyright queryResult legend page scaleval tlcoords brcoords north currentuser System blocks should not be renamed Note that blocks that are not mentioned in general activatedBlocks won t be displayed in any case general activatedBlocks mainmap title note scalebar overview copyright queryResult page legend logo scaleval tlcoords brcoords north 12 3 4 1 Block Template and Overriding Since all blocks descriptions are based on the same PdfBlock object a template block has been defined to factorize blocks common configuration for instance font family background color borders padding etc It is also a way to specify default blocks parameters values It is then possible to personalize blocks by overriding those properties within the block own description Blocks configuration overriding can be schemed as follows PHP PdfBlock hard coded gt gt gt block template user configured gt gt gt final block user configured Note that it is not necessary to redefine properties in blocks or in their template if their current values defined in parent structures are already OK For instance blocks default settings template type text template fontFamily times template fontSize 12 template fontItalic false template fontBold false template color black 98 PDF Export fpi gi i template template template template template template template template templat
68. of the existing path values but add a inbetween path1 path2 path3 C ms4w Apache cgi bin The example above is true if the PHP binary are installed in C ms4w Apache cgi bin Note If you are using the demo you need to have Gettext support installed as it uses Gettext by default If you used the win32 installer Gettext is already installed otherwise you must install it manually You can get a version of Gettext for Windows there http gnuwin32 sourceforge net packages gettext htm Also set the path to the Gettext binary in your PATH environment variable C Program Files GnuWin32 bin The example above is true if the Gettext binaries are installed in C Program Files GnuWin32 bin This is needed by the po2mo php script to merge and compile the languages translation files Note If you intend to use CVS in command line you need to install a CVS client Use WinCVS http www wincvs org or TortoiseCVS http www tortoisecvs org download shtml both are free Open Source clients You must add the path to the CVS binary in your PATH environment variable C Program Files TortoiseCvs The example above is true if you installed TortoiseCVS in c Program Files TortoiseCvs 23 Installation 1 1 4 3 2 CartoWeb Setup with Cygwin Open a Cygwin window and go to the CartoWeb root CEEE cd ms4w apps cartoweb3 Then see Section 1 1 3 2 1 Basic Setup Note You can download Cygwin her
69. output parameter in order to choose how the generated file will be served download box link inline The distUnit parameter is very important since it sets the unit used to measure the length specified in every blocks However it does not affect font sizes that are always indicated in points pt horizontalMarginand verticalMargin indicate how much space will be kept blank around each page No block will be printed below these distances from the sheets borders Note that these values can be overriden in the formats description For instance general settings general guiMode classic general formats A4 A3 general defaultFormat A4 general resolutions 96 150 300 general defaultResolution 96 general overviewScaleFactor 10 general defaultOrientation portrait general activatedBlocks mainmap title note scalebar overview copyright queryResult page legend Togo socaleval ilcoonds oEeCcoords general pdfEngine CwFpdf general pdfVersion 1 3 general output inline general filename map date dMY Hi pdf general distUnit mm general horizontalMargin 10 general verticalMargin 10 general importRemotePng false Some overview map settings are available as well The overviewScaleFactor indicates how wide the overview will be compared to the mainmap actual extent overviewColor and overviewOut lineColor respectively set the inner and border colors of the mainmap outline in the overview map
70. roles they belong to e authActive boolean Whether to show the Authentication login logout buttons note this is not related to the fact the authentication system will be active or not e users USERNAME List of users and their passwords USERNAME is the name of the user for whom the password is set Passwords values are mdSsums of the password To get this value you can type in a shell echo n mypassword md5sum Example users alice e3e4faee0cc7fc55ad402f517cdaf40 e roles USERNAME List of roles for each user USERNAME is replaced by the user for whom the roles are set Some roles have a special meaning see Section 15 2 2 Special Role Names It is possible to use three different locations where user and password are stored There are three mechanisms built in in CartoWeb 1 ini file 2 database 3 Idap The parameter securityContainer controls which backend is used e securityContainer can be ini for the file storage db for the dabase storage or ldap for the Idap storage Parameters for database and ldap storage are described below 115 Security Configuration 15 2 1 1 database storage e dbSecurityDsn The database connection string to be used For instance pgsql user password localhost test dbSecurityQueryUser The SQL query to perform to check a username password pair is valid It should return a row if the pair is correct For instance SELECT FROM users WHERE use
71. row gt rowId gt S value lt a gt lt td gt foreach a oS foreach lt table gt else t No results t 153 Search plugin it aL I This will return a table with the columns defined in the configuration file By clicking on a row you will call the recenter method By clicking on a row header you will order the result Note that the place of the result table is defined by a div that will be modified by the JavaScript lt div id search_results_div gt lt div gt The div id must be the same as the target id in function handleResponse see below Finally we have to set up the java script file Open or create the plugins search htdocs 4js Search ajax js and write AjaxPlugins Search handleResponse function pluginOutput should be the same value as the input search_config if pluginOutput htmlCode myconfig search_results_div innerHTML pluginOutput htmlCode myconfig Search plugin s Actions EA AjaxPlugins Search Actions AjaxPlugins Search Actions DoIt buildPostRequest function argObject return AjaxHandler buildPostRequest hi function order column if column search_sort_column value search_sort_column value column search_sort_direction value asc else if search_sort_direction value asc search_sort_direction value desc else search_sort_direction value tasci
72. t his gt call Sthis gt formRenderer gt showForm Sthis t t his gt call his gt saveSession S this gt clientSession his gt callPluginsImplementing ServerCaller PluginsImplementing ServerCaller Sthis gt mapResult PluginsImplementing ServerCalle Sthis gt mapRe PluginsImplementing Sessionable buildRequest this gt getMapResultFromRequest SmapRequest initializeResult r handleResult SUELEN saveSession callPluginsImplementing SinterfaceName methodName Sargument is run at various points of the program and make plu gins implementing given lt interfaceName gt interface execute given lt methodName gt with given lt argument gt argument Of course interface defined methods must be implemented in the matching plugins Plugins can implements one or more CartoWeb interfaces Implementing interfaces is not mandatory when writing a plugin but not doing so will keep plugins from being implicitely called by the main program As a result methods from plugins with no interface implementation also called service plugins must be explicitely called by another piece of code class ClientYourPlugin extends ClientPlugin implements Sessionable here comes your plugin client class def generally an other plugin GuiProvider bha baa ions e7 For a comprehensive list of available client and server inte
73. t work when using MapServer s hilighting feature see Chapter 9 Queries query coreplugin e hilight if false selection won t be hilighted on map e tableFlags table flags see Section 1 1 3 Tables for a description of type TableFlags lt complexType name ArrayOfQuerySelection gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types QuerySelection gt lt restriction gt lt complexContent gt lt complexType gt e array list of query selections lt complexType name QueryRequest gt lt all gt lt element name className type xsd string gt lt element lt element lt element lt element lt element lt element lt all gt name shape type types Shape gt name queryAllLayers type xsd boolean gt name defaultMaskMode type xsd boolean gt name defaultHilight type xsd boolean gt name defaultTableFlags type types TableFlags gt name querySelections type types ArrayOfQuerySelection gt lt complexType gt e className QueryRequest or extended class name if project implements an extension e shape type of query object dependant It can be a bounding box a polygon a circle or a point see Section 1 1 2 Shapes for a description of differents types 204 Calling Plugins e queryAllLayers if true will execute query on all selected layers ie lay
74. template templates cartoclient tpl see upstream template for instance It is recommended to add it outside of the main CartoWeb lt form gt tag since the generated HTML may contain an additional lt form gt tag Use CSS to place the result box Ajax is used to generate and display the resulting URL using the Prototype Javascript Framework If your CartoWeb does not run in the ajaxOn mode you need to add the Prototype file in the main template templates cartoclient tpl To do so add the following HTML code within the lt head gt tag if S linkIt default amp amp SajaxOn lt script type text javascript src r type js prototype js r gt lt scr If Ajax mode is on add the following code at the end of the ajax on section of templates cartoclient_ajaxHeader tpl if it is customized in your project If you use the regular templates cartoclient_ajaxHeader tpl the JS script is already included if S linkIt default lt script type text javascript src r type js plugin exportLinkIt linkit js r gt Also add the CSS file inclusion in templates cartoclient tpl if S linkIt default lt link rel stylesheet type text css href r type css plugin exportLinkIt linkI Warning Your toolbar tp MUST contains the if tool gt oneshot if condition on the tool activation action 173 Saving Map Context as an URL pingin exportLinki This is especialy important if you overrided that template
75. the convention yourlayer_hilight and you want to preserve your expressions in the hilight layer for hilighted objects IMPORTANT you need to set this metadata on the hilight layer not the original one e data_encoding any EncoderClass defined in client ini see Section 17 3 Character Set Encoding Configuration for Data Sources You must also specify that parameter in the exported_values metadata See Section 6 3 Metadata in Mapfile and layers ini for details Example METADATA Vidvalttri bute string fib sieing query_returned_attributes FID FNAME END 68 Queries coreplugin query 9 3 3 Hilight Configuration Hilight plugin can be used by any plugin to hilight objects on the map In basic CartoWeb installation only Query plugin uses this functionality As Hilight plugin is not a core plugin it must be loaded in order to use it with queries 9 3 3 1 Normal Mode Hilight on a specific layer can be generated by several means special layer activation special class activation dynamic layer class generation Decision is made in the following order 1 looks for a layer named lt layer_name gt _hilight 2 if not found looks for a class named hilight in the current layer 3 if not found dynamically creates a layer if meta data hilight_createlayer is set to true 4 if meta data hilight_createlayer is not set or set to false dynamically creates a class Here are th
76. they will have access to complementary interactions as well In that case don t forget to overload the matching interface defined methods in your extended class For instance ClientMyProjectLayers extends ClientLayers implements ToolProvider UEP oe oe Hf Tip To use new config parameters in your extended plugin add them in the ini file of your project original plugin eg projects lt your_project gt client_conf lt original_plugin gt ini 2 3 4 Combining Both Approaches If you need to modify add templates or resources overrriding AND PHP classes extension you can combine both approaches by following the instructions of the two last sections Say you would like to customize the images coreplugin mainmap size and formats management to e update the layout new pictos new texts new CSS e add some JS processing e add anew form field in a separated area of the CartoWeb interface First point is achieved by creating a images directory in projects yourProject coreplugins and filling it with an overriden template mapsizes tpl anew images css and some pictos projects yourProject coreplugins images projects yourProject coreplugins images templates mapsizes tpl projects yourProject coreplugins images htdocs css images css projects yourProject coreplugins images htdocs gfx button png lt mapsizes tpl gt lt p gt t Mapsize t lt select name mapsize id mapsize onchange jav
77. width x height width and height being positive integers size in pixels You may specify dimensions limitations in client_conf images ini see Section 8 1 Client side Configuration o drawMainmap boolean indicating if the mainmap must be drawn or not o drawKeymap boolean indicating if the keymap must be drawn or not o drawScalebar boolean indicating if the scalebar must be drawn or not Location plugin o recenter_bbox new bounding box comma separated coordinates eg 10 5 20 15 5 28 o recenter_x re centering new x coordinate o recenter_y fre centering new y coordinate o show_crosshair O0 or l default 0 If 1 display a crosshair on recenter_x recenter_y o recenter_scale new scale o id_recenter_layer re centering on objects layer to look for IDs o id_recenter_ids re centering on objects list of IDs comma separated o shortcut_id ID of the selected map size see Section 7 2 Server side Configuration Warning A layer must be queryable before id recentering works Add TEMPLATE ttt to that layer in the mapfile Query plugin o query_layer layer to look for IDs o query_select IDs of objects to add to selection o query_unselect IDs of objects to remove from selection o query_policy selection policy POLICY_XOR POLICY_UNION or POLICY_INTERSECTION default is POLICY_XOR o query_maskmode 0 or 1 default is 0 If 1 will show selection
78. 0 255 0 255 0 255 color of the mask when mask layer lt layer_name gt _mask is not defined wow e mask_transparency true transparency of the mask when mask layer lt layer_name gt _mask is not defined e outside_mask layer_name name of layer which will mask the outside aka complement If not set will try to find a layer named default_outside_mask 70 Queries coreplugin query Examples Mask using lt layer_name gt _mask layer LAYER NAME foo END LAYER NAME foo_mask END Mask using lt layer_name gt _mask layer and an outside mask LAYER NAME foo METADATA Outs Ce mask nar END END LAYER NAME foo_mask END LAYER NAME bar END Mask using dynamically generated layer and default outside mask LAYER NAME foo METADATA Tiss Colo VAS 255 2i5 5 mask_transparency 60 END END LAYER NAME default_outside_mask END 71 Annotation and Redlining futugin uine 10 Annotation and Redlining plugin outline Imagine you want to draw some features points lines polygons in your map to show specific data and or print it The outline plugin is what you need It allows you to draw features and to annotate them with label texts It s also possible to use polygons shapes as a mask layer see Mask mode User can choose between mask or draw mode with radio buttons See Section 10 2 1 outline ini for more information Shapes colo
79. 000 10000 50000 100000 500000 1000000 5000000 30 1 3 5 Filters You can put as many filters as you want one line per filter The filters available are you must prepend filters e scale a range of scales floating point e width a range of map width e height a range of map height e project a list separated by of project names e layer a list separated by of layer names e theme a list separated by of theme names e user a list separated by of user names e pdfFormat a list separated by of PDF format names e pdfRes a range of PDF resolution For list of names you can use for matching any string of character For example cn will match cn25 and cn50 For ranges of values you can give either a range like 2 5 or a simple value Some examples of filters filters scale 1000 5 5000 filters width 290 350 filters height 290 350 filters project sitn agri filters layer cn adresses filters theme orthophotos default filters user Jules Jean filters pdfFormat A4 A5 filters pdfRes 290 350 179 CartoWeb and WMS Usage Statistics plugin statsReports 30 1 4 Running Reports Generation Raw data imported with Import application are aggregated using the following command remove end of line backslashes on Windows java Xmx1G cp target stats standalone jar org cartoweb stats report Reports iniFilename myReports ini tableName stats db jdbc
80. 1 PDF Export fpi gi i blocks myText content db pgsql user password localhost dbname select name phone_number from phone_book where area_id 12 Tip It is possible to make some text blocks have their contents translated by setting their i18n parameter to true For instance blocks myTextBlock content This text will be translated blocks myTextBlock il8n true Translatable blocks are CartoWeb built in blocks copyright and date as well as your own text blocks Some other CartoWeb built in blocks such as legend scaleval page or query results table blocks are translated anyway Note that you will have to explicitly add those entries to your Gettext PO files since there is no way for script client 2pot php to automatically detect them Tip The date text block is fully customizable You may specify the date format using PHP date formatting http php net date Both configurations are correct use to add the date string in complete sentence blocks date content Generated on Y m d H i by CartoWeb3 or if the date string is alone blocks date content Y m d H i If you want to have the date block translated set its i18n parameter to t rue and add the translated version including date format to your PO files 12 3 4 4 Image Blocks Image blocks are used to display the maps main overview the scalebar and other user defined pictures such as logos or diagrams Except for system image b
81. 1 2 6 Plugins extensions further information The aim of this part is to give you further informations on creation of demoPlugins and demoEdit plugins extensions If you create a new plugin or adapt an existing one we guess it will be helpful to take these plugins extensions for example or use one of these two resources e User HowTo http www cartoweb org cwiki HowTo e Dev tutorial new plugins part Chapter 2 New Plugins 1 2 6 1 demoRouting Extension Routing installation instructions have moved to a dedicated chapter in the User Documentation Chapter 27 Routing plugin 1 2 6 2 demoEdit Extension Some useful tips are available in Section 14 3 How To 28 Structure 2 Structure 2 1 Introduction This chapter is an overall tour of the CartoWeb code structure It briefly explains the role of each directory When available links to relevant chapters of this documentation are also provided 2 2 Global Directory Structure After installation CartoWeb has the following directory structure e client Client specific code files e client_conf Client configuration files see Chapter 4 Configuration Files e common Common client and server code files e coreplugins Basic mandatory plugins o images Image generation see Chapter 8 Image Format Options Koiri images o layers Layers management see Chapter 6 Layers Terreni o location Navigation see Chapter 7 Navigation E o mapquery Perfor
82. 170 the_geom FROM roads_europe r LEFT JOIN roads_europe_vertices v ON v geom_id r source_id INSERT INTO roads_europe_vertices SELECT DISTINCT ON id FROM roads_europe_vertices_geom Routing luge CONNECTION user DB_USER password DB_PASSWD host DB_HOST dbname DB_NAME DATA the_geom from SELECT the_geom from routing_results as foo using unique gid using srid 1 TEMPLATE t CLASS NAME 0 STIGE SYMBOL circle Sizin IO COLORM OMARO END END END 27 2 2 5 General Configuration For the demo we suggest that you select your route by starting from a town until an other town This is possible because for each object of a european towns layer we have identified the nearest object of the roads_europe_vertices table That is why in the demoRouting configuration there is a client side configuration Normally in the plugin routing client side only allows you to type an id of object from which to start and an other to finish the route No configuration is needed So if you use demoRouting extension you must specify client side the e postgresRoutingVerticesTable vertices table e stepName vertices table col containing informations you want to propose a choice on e dsn the connexion string to the database Anyway server side you must specify e the routing table postgresRoutingTable option e the routing layer in the mapfile postgresRoutingResultsLayer option e the results routing table postgresRoutin
83. 3setup php Options To finish demoPlugins installation you will need to launch the cw3setup php with the config from file parameter pointing to a property file containing database configuration informations Such a file is provided in the cartoweb3 projects demoPlugins demo properties file You need to edit this file and change the parameter to match your environment In particular the DB_HOST DB_USER DB_PASSWD and DB_PORT options need to match your database access configuration DB_LOCATE_NAME must be set to the name of the database for the locate plugin This file contains comments about the description of each variables Here s an example how to call the cw3setup php script with the config from file option php cw3setup php install base url http www example com cartoweb config from file projects demoPlugins demo properties 26 Installation Note Routing fonctionnalities are also integrated in this demo But they need a more advanced configuration and the PgRouting module installed in the database so they aren t integrated in the basic installation The steps to integrate routing fonctionnalities and create database tables are described in a dedicated chapter of the User Documentation Chapter 27 Routing plugin 1 2 3 Routing specific installation Routing installation instructions have moved to a dedicated chapter in the User Documentation Chapter 27 Routing plugin 1 2 4 Locate Plugin specific installa
84. 7 COLOR 0 0 10 OUTLINE COLOR 255 255 255 RFOSITION Le END END END LAYER NAME cartoweb_line_outline TYPE LINE TRANSPARENCY 100 CLASS STYLE OUTLINECOLOR 255 0 0 SYMBOL line dashed SIZE 3 END LABEL TYPE TRUETYPE FONT Vera SIZE 7 COLOR Q 0 0 OUTLINE COLOR 255 255 255 ANGLE auto POSITION uc END END END LAYER NAME cartoweb_polygon_outline TYPE POLYGON TRANSPARENCY 60 CLASS STYLE COORG biome loom 0 OUTLINECOLOR 0 0 0 END LABEL TYPE TRUETYPE FONT Vera STAR 7 OUTLINECOLOR 255 255 255 COLOR 0 0 0 POSITION CO END END END Launch the setup script This step is compulsary to convert ini in files into ini configuration files read by Cartoweb By clicking on the reset_session button in the browser window you should see new buttons in the toolbar and the corresponding folder in the leftbar 286 Create a New Project C 8 Pdf Printing As done for the outline plugin add exportPdf to the list of plugins to load on both client and server side After launching the setup script and refreshing the application reset_session you should be able to test the new functionality as a new folder appeared in the interface But a warning printed in the pdf file advices you to edit your export Pdf ini file So move exportPdf ini from sampleFiles to client_conf Take care that this is a client side configuration file Try a new print no need to reset For more information on how to edit your exp
85. Annotation and Redlining ipiugini Gaii 10 4 1 Accepted Parameters Parameters list e outline_point http www example com cartoweb myproject php outline_point 611748 5232242 e outline_line http www example com cartoweb myproject php outline_line 611748 5232242 748204 5232242 748204 505030 e outline_poly http www example com cartoweb myproject php outline_poly 611748 5232242 748204 5232242 748204 505030 e outline_circle http www example com cartoweb myproject php outline_circle 611748 5232242 50000 e It is possible to describe several shapes including of different types http www example com cartoweb myproject php outline_point 611748 5232242so0utline_point 748204 523 e Customized labels may be linked to shapes using the following syntax http www example com cartoweb myproject php out line_circle 611748 5232242 50000 sometblue circle Note If you do not want to have persistent outline you can add the prevent_save_session parameter in the URL For example http www example com cartoweb myproject php out line_point 611748 5232242 amp prevent_save_session This may be useful if you use the mode image output http www example com cartoweb myproject php mode image amp out line_point 611748 5232242 amp sprevent_save_sessio 10 5 The ToolPicker 10 5 1 What is the ToolPicker The ToolPicker is a mini javascript framework used to display dynamically on screen several DHTML tools
86. Attribute code_dept Ssmarty gt assign depChefLieu ucfirst strtolower this gt getAttribute nom_chf_1l return Ssmarty gt fetch layerResult_depLayer tpl 147 ToolTips plugin This method allows people to build tooltips with results coming from several sources joined tables for example Tip Don t forget to load the plugin on client side client_conf client ini 23 3 3 Styling Here are some considerations on how to customize the tooltip appearance TODO 23 4 Incompatibilities Please note that some features were removed from the tooltips plugin to enhance its stability The area_async and the area_direct modes are not available anymore as they complicated the javascript code a lot and weren t used at all And the timeout_async was replaced by tooltips in the configuration files 148 Search plugin 24 Search plugin 24 1 Introduction The search plugin aim is to offer standards search features like recentering result offset guided search ajax features in a generic way Take note that in his current state the plugin only offers a server framework There is not yet any generic JavaScript framework Warning The following examples only work with AJAX mode on 24 2 Basic Usage Introduction 24 2 1 General Considerations The search plugin must be activated on both CartoClient and CartoServer side ie the loadPlugins parameter must contain search in y
87. Calling Plugins timestamp gt 1107925732 serverMessages gt Array imagesResult gt stdClass Object className gt ImagesResult mainmap gt stdClass Object isDrawn gt 1 path gt images 110846607738541 jpg width gt 500 height gt 500 format gt keymap gt stdClass Object isDrawn gt 1 path gt images 110846607738542 png width gt 150 height gt 99 format gt scalebar gt stdClass Object isDrawn gt path gt width gt height gt format gt locationResult gt stdClass Object className gt LocationResult bbox gt stdClass Object imin ES SVOKOVONO miny gt 100000 maxx gt 600000 maxy gt 150000 scale gt 377952 96 queryResult gt stdClass Object className gt QueryResult tableGroup gt stdClass Object groupId gt query groupTitle gt Query tables gt Array 0 gt stdClass Object tableId gt swiss_layer_1 tableTitle gt swiss_layer_l numRows gt 0 totalRows gt 0 offset gt 0 columniIds gt Array columnTitles gt Array noRowlId gt 215 Calling Plugins 1 rows gt Array gt stdClass Object tableId gt swiss_layer_2 tableTitle gt swiss_layer_2 numRows gt 2 totalRows gt 0 offset gt 0 columnIds gt Array 0 gt attribute_3
88. CartoWeb package MyPackage author Gustave Dupond lt gustave dupond camptocamp version Id Spe es ache ok ai e This is 2 require deseriptien s require_once required_file php Toa ie 6 Sliowic ClAgCrweijieiiom Oe WiClags MyClass Long dsserit von package MyPackage aj class MyClass extends MySuperClass how to use com gt 263 Code Documentation a evar ik S public simpleVariable var MyVarClass if public SsimpleObjectVariable This variable needs a description a rae St tei Lae public SnotSoSimpleVariable param int yf function __construct SinitialValue parentie CONS ie ccd ey Sthis gt simpleVariable SinitialValue Sthis gt simpleObjectVariable NULL Sthis gt notSoSimpleVariable param int 27 function setSimpleVariable newValue this gt simpleVariable SnewValue S Srecurn unt SA function getSimpleVariable return this gt simpleVariable This is a short description for method This is a longer description Don t forget to have a look here link MyLinkClass myLinkMethod blah blah param string description of first parameter param MyParamClass description of second parameter return boolean true if everything s fine see MyInterestingClass ae function myMethod myFirstParameter SmySecondParameter blah blah return true see
89. CartoWeb Documentation 3 5 0 Edition to Published 2008 09 04 Presentation and Architecture Part I Presentation and Architecture This first part of the documentation is an overall presentation of both the visible and the hidden features of CartoWeb The goals are first to give an idea of what CartoWeb can readily do if used as it is shipped and second to explain why it is a powerful framework to build more advanced applications Project Presentation 1 Project Presentation 1 1 About CartoWeb CartoWeb3 is a comprehensive and ready to use Web GIS Geographical Information System including many powerful features As a modular and extensible solution it is also a convenient framework for building advanced and customized applications Developed by Camptocamp SA http www camptocamp com it is based on the UMN MapServer http mapserver gis umn edu engine and is released under the GNU GPL license http www gnu org copyleft gpl html 1 2 Credits To date the following people have been more or less involved in the development of CartoWeb e Yves Bolognini e Mathieu Bornoz e Oliver Christen e Damien Corpataux e Olivier Courtin e Daniel Faivre e Alexandre Fellay e Marc Fournier e Jean Denis Giguere e Florent Giraud e Pierre Giraud e David Jonglez e Fr d ric Junod e Sylvain Pasche e Claude Philipona e Arnaud Saint Leger e Alexandre Saunier Cartographic Functionalities 2 Cart
90. INTERSECTION gt lt restriction gt lt simpleType gt e POLICY_XOR XOR selection when selecting a group of objects already selected ones are unselected and not yet selected ones are selected default type e POLICY_UNION union selection when selecting a group of objects already selected ones are kept selected and not yet selected ones are selected e POLICY_INTERSECTION intersection selection when selecting a group of objects only already selected ones are kept selected lt complexType name QuerySelection gt lt ei Li lt element name layerId type xsd string gt lt element name idAttribute type xsd string gt lt element name idType type xsd string gt lt element name selectedIds type types ArrayOfString gt lt element name uselInQuery type xsd boolean gt 203 Calling Plugins lt element lt element lt element lt element lt all gt name policy type types QuerySelectionPolicy gt name maskMode type xsd boolean gt name hilight type xsd boolean gt name tableFlags type types TableFlags gt lt complexType gt e layerld layer ID on which query will be executed e idAttribute name of ID attribute e idType type of ID attribute string or int e selectedIds list of IDs e useInQuery if true will force query to use this layer e policy type of selection e maskMode if true will apply a mask instead of a simple selection This won
91. ION png FORMATOPTION INTERLACE OFEF END 8 3 2 Automatic Image Type Switch It is often desirable to adapt the imagetype of the map to the represented data Typically vector data is well rendered in png while the colors of a raster background require either jpeg or png24 format CartoWeb includes a mechanism that automatically switches the format when specific layers are selected A special metadata of the layers triggers this behavior METADATA force_imagetype jpeglpng END This metadata overrides the general fileformat of the mainmap but not of the legend icons these stay in the initial fileformat 65 Queries coreplugin query 9 Queries coreplugin query Core plugin Query allows to search for geographical objects Found objects are hilighted and if requested related data are returned to client Depending on configuration and user choices queries are executed on one layer several layers or all layers currently displayed on map Queries can be executed on a geographic selection or using a list of object IDs Geographic selection can be a point a rectangle a polygon or a circle but is a rectangle by default The second way to execute a query is used in particular to maintain selection persistence object IDs are stored client side and sent to server each time the page is reloaded Hilighting objects can be done using standard Mapserver queries or using special Hilight plugin See Section 9 3
92. Image Format Options coreplugin images e noDrawKeymap if true keymap will not be drawn at all e noDrawScalebar if true scalebar will not be drawn 8 2 Server side Configuration Here are the options that can be set e maxMapWidth maximum allowed width in pixels of the generated mainmap If the value requested by the client is greater maxMapWidth takes precedence over it e maxMapHeight maximum allowed height in pixels of the generated mainmap If the value requested by the client is greater maxMapHeight takes precedence over it 8 3 Related Elements in Mapfile 8 3 1 General Image Type The general output fileformat is handled by Mapserver The basic command in the mapfile is IMAGETYPE png jpeg gif Then the OUTPUTFORMAT objects may set properties for each possible fileformat Example for jpeg OUTPUTFORMAT NAME jpeg DRIVER GD JPEG MIMETYPE image jpeg IMAGEMODE RGB FORMATOPTION QUALITY 85 EXTENSION Jpg END See the available options for each format in the Mapserver doc Important note if you intend to use pdf printing interlaced png images are not supported by the fpdf library that is used in this module Consequently you must have the option FORMATOPTION INTERLACE OFF in the definition of the png OUTPUTFORMAT Here is the complete object 64 Image Format Op tions coreplugin images OUTPUTFORMAT NAME png DRIVER GD PNG MIMETYPE image png IMAGEMODE PC256 EXTENS
93. MyInterface myImplementingMethod E function myImplementingMethod myParameter blah blah return true function myOverridingMethod SmyParameter blah blah return true 264 Code Documentation 265 Logging and Debugging 9 Logging and Debugging 9 1 Introduction This chapter is about the logging framework used in CartoWeb and gives some tips for debugging the application The two concepts are somewhat related as logging is often used as a way to ease debugging 9 2 Logging Logging is an important feature for being able to see what happens debug more easily the application and track invalid or unexpected situations The logging framework used for CartoWeb is Log4php http logging apache org log4php Log4php is a portage to Php of the famous Log4j Java logging library Thus Log4php has lots of similarities with Log4j and users familiar with it will have no problems understanding it 9 2 1 Log4php Activation To activate the logging with the default settings uncomment the line log4php rootLogger DEBUG Al in client_conf cartoclientLogger properties 9 2 2 Log4php Configuration Files Log4php settings are customizable in the client_conf cartoclientLogger properties configuration file on the CartoClient and server_conf cartoserverLogger properties on the CartoServer For the detailed syntax of the configuration file see the Log4php documentation A very short introduction i
94. Note that the out line plugin must be activated ie added in the client ini loadPlugins parameter for those settings to be taken into account Tip To use the classical MapServer keymap in place of the overview set the overview block content parameter to static see Section 12 3 4 Blocks Configuration as 96 PDF Export biti follows blocks overview content static In that case parameters overviewScaleFactor overviewColor overviewOutlineColor are ignored 12 3 2 2 formats Formats objects describe the PDF pages sizes bigDimension smal1Dimension One can describe as many formats as desired Moreover there is no theoritical page size limit except that the bigger the maps the longer the document generation A format is determined by its biggest dimension bigDimension and its smallest dimension smal1Dimension The label parameter will be translated using Cw3 I18n internationalization system Chapter 17 Internationalization It is not required to be identical to the format object id On the other hand the latter id must be textually listed in general formats parameter or else it will not be taken into account In addition a couple of format parameters can be specified horizontalMargin and verticalMargin override the corresponding general parameters if different margins must be applied for the given format maxResolution indicates the highest allowed resolution for the given format it enable
95. Precision 73 attributes 145 authActive 115 autoClassLegend 52 B basedn 116 bbox initial 62 block positioning PDF 99 Blocks configuration PDF 91 98 bottomLayers 57 C charsetUtf8 CSV 82 collapsibleKeymap 63 Colors PDF 94 Column reorder 238 Coreplugins 217 crosshairSymbol 61 crosshairSymbolColor 61 crosshairSymbolSize 61 CSV export plugin 81 Currentuser PDF 105 D data_encoding 68 dbSecurityDsn 116 dbSecurityQueryRoles 116 dbSecurityQueryUser 116 dbTableName 145 defaultAttributes 67 defaultHilight 66 defaultMaskmode 66 defaultPolicy 66 defaultTable 67 displayExtendedSelection 66 displayMeasures 72 drawQueryUsingHilight 67 dsn 145 DXF export 82 E editDisplayAction 111 editLayers 111 editResultNbCol 111 edit_attributes 112 edit_geometry_column 111 edit_geometry_type 111 edit_rendering 112 edit_srid 112 edit_table 111 enableTransparency 57 Export plugins 81 227 exportDxfContainerName DXF 83 extent 62 F filename CSV 82 fileName DXF 83 Filters 229 force_imagetype 65 Formats configuration PDF 90 formats object PDF 97 freeScaleActive 60 G General configuration PDF 87 general object PDF 95 geomColName 146 Geostatistics 143 groupattr 116 groupdn 116 groupfilter 116 290 Index groupscope 116 H Hilight 69 hilight_color 69 hilight_createlayer 69 hilight_transparency 69 hilight_use_logical_expre
96. Size 62 refLinesSize 62 refMarksColor 62 refMarksInterval interval 62 refMarksInterval maxScale 62 refMarksOrigin 62 refMarksSize 62 refMarksSymbol 62 refMarksSymbolSize 62 refMarksTransparency 62 Resources 130 returnAttributesActive 66 Roles management PDF 106 roles USERNAME 115 root layergroup 48 roundLevel DXF 83 routing 166 RTF Export 83 S scaleModeDiscrete 61 scales label 61 scales value 61 scales visible 61 scalesActive 60 scaleUnitLimit 60 62 Search 149 securityContainer 115 separator CSV 82 shortcuts bbox 61 shortcuts label 61 shortcutsActive 60 showRefMarks 61 Smarty Templates 130 Special plugins 227 srid 146 symbolSize 73 T Table blocks PDF 103 Tables 233 template 146 template object PDF 98 Templates 130 Text blocks PDF 100 textDelimiter CSV 82 timeoutBeforeHide 146 tooltips 145 topLayers 56 transparencyLevels 57 U userattr 116 users USERNAME 115 V View deletion 110 View loading 109 View recording 110 View update 110 Views 107 Views configuration 107 W weightFullextent 61 weightOutlineCircle 72 weightOutlineLine 72 weightOutlinePoint 72 weightOutlinePoly 72 weightOutlineRectangle 72 weightPan 61 weightQueryByBbox 67 weightQueryByCircle 67 292 Index weightQueryByPoint 67 weightQueryByPolygon 67 weightZoomin 60 weightZoomout 61 WMS Legend 53 wmslight 164 wms_legend_
97. Some tools come pre included e ColorPicker The ColorPicker allows the user to pick a color He she can either pick it from a gradient map use RGB or HSL slider input RGB or HSL values input an hexadecial value or pick it from a preselected list of colors The color 75 Annotation and Redlining iplug cout value is then returned to the main page e SymbolPicker The SymbolPicker allows the user to pick a symbol in a predefined list of symbols The symbols are generated off the sym file on the serverside of CartoWeb The symbol is then returned to the main page 10 5 2 Installation To use the ToolPicker in a project simply enable it in your client ini configuration file by setting toolPickerOn true The ToolPicker requires the corresponding script css and template in the cartoclient tpl file In the header lt link rel stylesheet type text css href css toolPicker css gt In the body preferably at the end include file toolPicker tpl 10 5 3 ToolPicker Usage The main ToolPicker function accepts 3 parameters 2 are mandatory the last is optional Tooren Sieieding te Ol ach SE a SPiewswine icOCl ainjowle ise Lp Siewwee cool fouicjoote ashe tool_id_list You can initialize one or more tools at once The tool_id_list parameter is composed of one or more numerical values separated by comma and enclosed by quotes or simplequotes Example 2 or 1 4 or 3 2 1 The order of the id
98. The standard views plugin is not required to have hooks working Finally set the viewHooksClassName with your extended class name in client ini configuration in client ini viewOn true viewStorage db viewablePlugins location layers query outline viewMetas author viewHooksClassName FoobarViewHooks lt php projects lt your_project gt plugins views client FoobarViewHooks php ef class FoobarViewHooks extends ViewHooks see ViewHooks handlePreLoading a public function handlePreLoading data S viewId Your customized code 275 AJAX Implementation 12 AJAX Implementation 12 1 Introduction CartoWeb implements an AJAX layer enabling asynchronous update of the HTML GUI 12 2 AJAX Implementation Outline The implementation of AJAX in CartoWeb is achieved by extending the Cartoclient and creating a lightweight Javascript engine It introduces a few new concepts e Synchronous and asynchronous modes e Ajaxable interface e Plugins Javascript side e Plugins actions e Plugins enablement level Client web cartoclient cartoserver Plugin 1 ajax Plugin 2 non ajax Plugin n ajax messages 12 2 1 Synchronous And Asynchronous Modes In addition to the implicit synchronous mode traditional until now Cartoclient execution flow an asynchronous mode has been implemented to process AJAX calls e The synchronous mode is the default Cartoclie
99. WSDL code for the plugin request and response See Section 2 1 What are Plugins for examples on how to write such WSDL documents Note You need to add a className element in the WSDL file for a proper parsing from CartoWeb 9 Activate your plugin by adding its name to the loadPlugins of the matching project configuration files 2 2 5 Automatic Files Inclusion Main plugin PHP files eg client YourPlugin php ServerYourPlugin php YourPlugin php are automatically included and their contained classes and objects are directly accessible Other files in client server or common are not and must be included explicitely in the main plugin PHP files Templates stored in the plugin templates directory are also accessible directly by using PHP code similar to the followin one Ssmarty new Smarty_Plugin S this gt getCartoclient this Ssmarty sassign foo bar return Ssmarty gt fetch yourPlugin tpl 2 3 Adapting a Plugin 2 3 1 Approaches 222 New Plugins If an already available plugin or coreplugin offers close functionalities to the ones you need if you wish to slightly modify its behavior or simply want to adapt its output to your website layout it is far easier to adapt it then to build a new one from scratch There are two levels of plugin adaptation You can e override its HTML templates resources pictos CSS or JS files and its configuration as well This approach is generally su
100. _conf server ini for server e showDevelMessages truelfalse Shows developer messages e developerIniConfig truelfalse Sets ini parameters useful during development 42 Caches Configuration 5 Caches Configuration Several different caching mechanisms are available in CartoWeb for maximum performances The different types of caches are described in the next chapters 5 1 Smarty Cache The templating system used in CartoWeb is Smarty which offers two level of caching for templates One is compilation of templates into the templates_c directory and the other is static caching of templates In CartoWeb because pages are very dynamic only the first level of caching is used The caching feature of Smarty is totally transparent to the user However an option can be set in the client_conf client ini configuration file to enhance performances e smartyCompileCheck truelfalse Set this to false in production to improve performance Warning This parameter will be overrided by the profile parameter See Section 4 1 Common client ini and server ini Options Warning Setting this option to false means that your template won t be updated any more Pay attention to this if you need to change them on the server 5 2 WSDL Cache When using SOAP and the useWsd1 option is set to true in the client_conf client ini or server_conf server ini the WSDL generated document can be cached for more performance This is the
101. _geom AS SELECT v id v geom_id v txt startPoint geometryn r the_geom 1 AS INSERT INTO roads_europe_vertices_geom SELECT v id v geom_id v txt endPoint geometryn r the_geom 1 AS the_geom FROM roads_europe r LEFT JOIN roads_europe_vertices v ON v geom_id r target_id DELETE FROM roads_europe_vertices UV DROP TABLE roads_europe_vertices_geom Now all is set up correctly for using the shortest path function on these data But to include the routing fonctionnalities in a custom project we also must respect some rules dictated by the routing plugin 27 2 2 3 Routing Plugin Database Configuration The two things to do are to e create the routing results table In this example the table is routing_results S CREATE TABLE routing_results results_id integer timestamp bigint gid integer i SELECT AddGeometryColumn routing_results the_geom 1 MULTILINESTRING 2 e create the routing_results_seq sequence CREATE SEQUENCE routing_results_seq INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1 27 2 2 4 Mapftile Configuration In the mapfile you must include the routing layer its connection to the database a symbology for the route and a first route using a unique identifier The data parameter will be overwritten by the routing plugin to draw the route chosen by the end user Example LAYER NAME graph TYPE LINE TRANSPARENCY 80 CONNECTIONTYPE postgis
102. _once common AllTests php class AllTests public static function surted Ssuite new PHPUnit2_Framework_TestSuite Ssuite gt addTest client_AllTests suite Ssuite gt addTest common_AllTests suite return Ssuite 7 2 2 Specific Information for Tests This section describes specific features developped in CartoWeb for running tests and infrastructure classes for more simple test case writing 259 Unit Tests 7 2 2 1 HttpUnit Based Tests To test features of the cartoclient the HttpUnit http httpunit sourceforge net software is used It is written in Java and there is no Php port The http unit tests are run if you have a JVM in you path For more information about running HttpUnit tests see the test s client httpunit README file in the CartoWeb distribution 7 2 2 2 Testing CartoWeb Plugins Plugins are a main component in CartoWeb architecture That s why there is support to maintain common code used for testing plugins As described in Section 7 2 1 General Information About Writing Tests the tests for plugins have to mirror the file hierarchy of the base application That s why there are coreplugins and plugins directories where test for core plugins and plugins are stored respectively Note Tests are also available for projects So to test a plugin in a project the path of the test will be lt cartoweb3 gt lt projectname gt tests plugin lt pluginname gt Tes
103. _sort_direction value Maset else if search_sort_direction value asc search_sort_direction value desc else search_sort_direction value asc CartoWeb trigger Search DoIt we empty the old selects and reinsert the new ones instead Please do not forget to modify the search_config input value function initializeTown town_select_div innerHTML var myinput search_config myinput value Adresses_init_town CartoWeb trigger Search DoIt function initializeStreet street_select_div innerHTML var myinput search_config myinput value Adresses_init_street CartoWeb trigger Search DoIt function search var myinput search_config j myinput value Adresses CartoWeb trigger Search DoIt function recenter id if search_config value Adresses 158 Search plugin id to recenter be sure there is a hidden input with that name and id in your template if not add it id_recenter_ids value id if the search database table name is the same as the related layer to recenter on you can set it as below be sure there is a hidden input with that name and id in your template if not add it id_recenter_layer value search_config value do not use the recenter_scale parameter if you recenter on ids only use it with recenter on x y you can set the recenter scale in lo
104. able date dMY csv fileName date Ymd Hi _ table csv if true exported CSV file will be UTF 8 encoded if false it will be ISO 8859 1 encoded default charsetUtf8 false 11 4 DXF Export DXF is a drawing format supported by AutoCAD and assimilated software With CartoWeb it is possible to export a DXF description of the shapes drawn with the out line plugin The latter plugin must be activated before using exportDxf plugin A few configuration parameters are available in client_conf exportDxf ini 82 Exp ort Plugins plugin exportCsv exportHtml exportDxf exportRtf exportImg e roundLevel integer indicates how many digits must appear after the decimal point in points coordinates Default is 2 e fileName string specifies the filename naming convention to use It may be static or contain athe generation date under various formats Date formating is performed by indicating between a couple of brackets the keyword date followed by a comma and PHP date like date format see http php net date Default filename convention is export_ date Ymd Hi dxf which gives for instance export_20060725 2021 dxf e exportDxfContainerName string specifies the ID of the block containing the SexportDxf variable in the template when working with Ajax mode enabled For exemple exportDxfContainerName exportDxfContainer in exportDxf ini and lt div id exportDxfContainer gt S exportDxf lt div gt in your
105. agesRequest gt keymap gt isDrawn true Srequest gt imagesRequest gt keymap gt path Srequest gt imagesRequest gt keymap gt width 100 Srequest gt imagesRequest gt keymap gt height 100 Srequest gt imagesRequest gt keymap gt format Srequest gt imagesRequest gt scalebar gt isDrawn false Srequest gt imagesRequest gt scalebar gt path Srequest gt imagesRequest gt scalebar gt width 0 Srequest gt imagesRequest gt scalebar gt height 0 Srequest gt imagesRequest gt scalebar gt format Two layers are displayed Resolution attribute is set to null to keep standard 213 Calling Plugins Mapserver resolution Srequest gt layersRequest gt className LayersRequest Srequest gt layersRequest gt layerIds array swiss_layer_l1 swiss_layer_2 Srequest gt layersRequest gt resolution null In this case the location request object is of type bbox Only new bounding box is required Srequest gt locationRequest gt className LocationRequest Srequest gt locationRequest gt locationType bboxLocationRequest Srequest gt locationRequest gt bboxLocationRequest gt bbox gt minx 550000 Srequest gt locationRequest gt bboxLocationRequest gt bbox gt miny 100000 Srequest gt locationRequest gt bboxLocationRequest gt bbox gt maxx 600000 Srequest gt locatio
106. agesRequest gt mainmap gt path Srequest gt imagesRequest gt mainmap gt width 500 Srequest gt imagesRequest gt mainmap gt height 500 Srequest gt imagesRequest gt mainmap gt format Srequest gt imagesRequest gt keymap gt isDrawn false Srequest gt imagesRequest gt keymap gt path Srequest gt imagesRequest gt keymap gt width 0 Srequest gt imagesRequest gt keymap gt height 0 Srequest gt imagesRequest gt keymap gt format Srequest gt imagesRequest gt scalebar gt isDrawn true Srequest gt imagesRequest gt scalebar gt path Srequest gt imagesRequest gt scalebar gt width 100 Srequest gt imagesRequest gt scalebar gt height 100 Srequest gt imagesRequest gt scalebar gt format Two layers are displayed Resolution attribute is set to null to keep standard Mapserver resolution Srequest gt layersRequest gt className LayersRequest Srequest gt layersRequest gt layerIds array swiss_layer_1 Visas llenyeie 2 3 null Srequest gt layersRequest gt resolution In this case the location request object is of type zoom point and zoom type is set to ZOOM_SCALE Bbox is unused but is required Srequest gt locationRequest gt className LocationRequest Srequest gt locationRequest gt locationType zoomPointLocationRequest Srequest gt locationRequest
107. al plugins e Class TableFlags which defines parameters that will be useful for a plugin using tables Typically a plugin using table will include a TableFlags in its request and a TableGroup in its result This is the case for Query plugin which is the only core plugin which uses tables 2 4 3 2 Setting Rules Tables plugin maintains an object called the registry one on client and one on server This object allows to add table rules which will describes how tables must be displayed It is recommended to add rules in plugin s initialize method so they are ready at the earliest stage To obtain the registry object first you have to get the Tables plugin object On client public function tnatializecy 4 StablesPlugin Sthis gt cartoclient gt getPluginManager gt tables Sregistry S tablesPlugin gt getTableRulesRegistry Add rules here 233 New Plugins On server plugin manager is stored in ServerContext object IER Se StablesPlugin Sthis gt serverContext gt getPluginManager gt tables WA woe Now you are ready to add rules Next sections describe the different types of rules Registry s method signature is explained for each type Once rules have been added in registry they must be executed on tables See Section 2 4 3 4 Executing Rules for a description of table rules execution 2 4 3 2 1 Column Selector public function addColumnSelector S groupiId S tab
108. amic mapfile modifications The standards steps to use this mechanism are 1 Create all the needed elements and combine them together in a MapOverlay ora LayerOverlay instance 2 Call the updateMap function The function returns a MapOverlay instance 3 If needed use the result instance to retrieve an index or a element name Note that the modification are not saved in the project s mapfile the result of the mapfile modifications are specific to a session 3 2 Plugin usage This chapter contains some basic examples of the plugin usage All the code listed here must be placed in the server part of a plugin 3 2 1 Class creation Consider this code excerpt Scolor new ColorOverlay Seolor sred 255 Scolor gt green 0 Scolor gt blue 0 Sstyle new StyleOverlay Sstyle gt index 0 Sstyle color Scoelor Slabel new LabelOverlay Slabel gt outlineColor Scolor class new ClassOverlay Sclass gt action BasicOverlay ACTION_INSERT class gt name foobar Sclass gt styles array S style Sclass gt label Slabel A ColorOverlay and a StyleOverlay are created Create a LabelOverlay and set the text color Note that those three instances color style and label have only a subset of theirs variable who are set Slayerl new LayerOverlay Slayerl gt name cartoweb_point_outline Slayerl gt classes array class Put the class in the layer The beh
109. an output e Retrieve last request that was sent to server e Call all plugins to ask for request modification eg map resolution changes keymap generation enabled disabled etc e Call server to get a new modified result e Use the result to generate output e Return output in a standardized form 2 4 1 1 Export Plugin Naming Convention Warning Export plugins MUST have names that begin with the string export for instance exportPdf exportCsv Or exportHtml This rule does not apply to extended plugins since only the original plugin name is detected 2 4 1 2 ExportPlugin 22 1 New Plugins Class ExportPlugin implements a special type of client plugin with some specific functionnalities for export It implements interface GuiProvider so child classes must implement corresponding methods Class methods are e getLastMapRequest returns last used request object This is useful to prepare a new call to server in order to obtain data specific to export This call is done in method getExportResult e getLastMapResult This can also be useful in some cases to have the last returned result obect e getExportResult executes call to server in order to obtain a modified result suitable for export generation Calls all exportable plugins in order to modify request see Section 2 4 1 4 Exportable Interface e getExport abstract contains export generation itself Should prepare export configuration
110. anted high resolution for superusers Similarly high resolution aerial views may only be visible within an organization while external users should be content with satellite photographs A basic file based authentication mechanism is included but any other mechanism that is able to authenticate an user and to link him to a role could be used as well 2 10 PDF Output and Other Export Formats CartoWeb is able to output a fully configurable PDF document Some options can be chosen by the end user in the following dialog while the CartoWeb admin defines which elements maps legends tables additional logos or watermarks are to be printed and sets their positions within the page Cartographic Functionalities Themes Pririt Search Format and Resolution dpi Orientation g Portrait C Landscape Title Hote Options lw Scalebar E Oye rrien E Quen Results J Legend C On map C In new page a Mone Frim Other output formats include the graphic formats jpeg png of the map itself simplified html templates and comma separated values tables of the query results Architecture 3 Architecture 3 1 Introduction CartoWeb uses an innovative design and state of the art technologies The following sections briefly review the main employed approaches 3 2 MapServer MapScript CartoWeb is based on the UMN MapServer http mapserver gis umn edu engine Interactions
111. application http www yoursite org cartoweb3 htdocs client php reset_session e prevent_save_session This will bypass the session save Useful when you want to performe an action without effect on the actual state of the application This was added specifically when using the mode image global parameter http www yoursite org cartoweb3 htdocs client php prevent_save_session e force map refresh This will force the map to be redrawn by Mapserver effectively removing all cache http www yoursite org cartoweb3 htdocs client php force_map_refresh Warning This may impact performances and load It s adviced to only use it for development purpose mode This will define the kind of output of CartoWeb By default it will be html Another possible output is image In this case CartoWeb will only output an image http www yoursite org cartoweb3 htdocs client php mode image The image mode can be used with other plugin specific parameters http www yoursite org cartoweb3 htdocs client php mode image amp recenter_x 300000 amp recenter_y 515000 This is the list of parameters that can be set in a filter plugin using function setValue in php file or GET request URL query string e Images plugin o mapsize ID of the selected map size see Section 8 1 Client side Configuration 230 New Plugins o customMapsize this string parameter enables to specify a customized map size using the syntax
112. as a mask o query_hilight 0 or l default is 1 If 0 won t shows selection hilighted o query_return_attributes 0 or l default is 1 If 0 won t return attributes other than IDs o query_return_table 0 or l default is 1 If 0 won t return any table results o query_clear 0 or l default is 0 If l previous query results are purged even if they were marked as persistent 231 New Plugins o query_blocks an associative array parameter used to select objects from several layers at once Indexes are layers ids whereas values are ids of objects to query For instance qguery_blocks layerl 123 345 358 amp query_blocks layer2 4 2345 98 When this parameter is used query_select and query_unselect parameters are ignored e Layers plugin o switch_id id of the switch to be used when the children switching is activated see Section 6 2 4 Children Switching o layer_select comma separated list of layers or layerGroups id s that must be added into the activated layers list o layer_unselect comma separated list of layers or layerGroups id s that must be removed from the activated layers list In some cases layerGroups children might have to be explicitely listed to actually be removed e Outline plugin o GET parameters are available to interact with the outline plugin See Section 10 4 GET Parameters Warning Note that for Query plugin display of extended selecti
113. ascript checkMapsize gt html_options options Smapsizes_options selected Smapsize_selected 225 New Plugins lt select gt lt input type image src r type gfx plugin images button png r alt t Ok button t id imagesButton gt lt p gt For details about template r resource and t translation tags see Section 18 2 Tnternationalization and Section 18 3 Resources checkMapsize JavaScript function is not defined in the upstream coreplugin So we have to add a JS file in our overriden plugin projects yourProject coreplugins images htdocs js projects yourProject coreplugins images htdocs js images js images js function checkMapsize alert foobar To add a new form field in a separated area and consequently in a separated template there is no other way than to modify the Client Images PHP class in order to call the additional template in a special method The extension approach is thus required Then create a yourProjectImages directory in projects yourProject coreplugins as follows projects yourProject coreplugins yourProjectImages projects yourProject coreplugins yourProjectImages client projects yourProject coreplugins yourProjectImages client ClientYourProjectImages php It can seem a little tricky but the new template file say yourImages tp1 will not be stored in projects yourProject coreplugins yourProjectImages templates as one can expect it but
114. ata fields that must be saved in addition to the viewable plugins data for instance author email description Common metadata fields such as viewTitle are anyway saved Note that metadata fields must have homonym form fields in plugins views templates views tpl to be taken into account e viewDsn string DSN Data Source Name gives the database connection parameters Only used in database storage mode Any DSN format supported by PEAR DB can be used See PEAR DB manual for more info about DSNs at http pear php net manual en package database db intro dsn php Note that you can call any database server type as long as it is supported by PEAR DB and that your PHP distribution has the matching extension enabled e viewSchema string Let you specify a schema in the database By default no schema are specified This parameter is totally optional e viewAuth comma separated list of strings list of roles allowed to perform views edition actions Given roles must match client_conf auth ini defined ones See also Chapter 15 Security Configuration e viewSavedRequest comma separated list of strings list of REQUEST variables GET POST COOKIE that must be preserved when loading a view Some are already built in listed such as tool js_folder_idx project collapse_keymap and views related parameters Adding other CartoWeb reserved REQUEST variables names to the list may prevent the view system from working correctly e viewLogErro
115. atsReport_cursomfilename csv csvUseTextDelimiter 1 csvTextDelimiter e outputCsv set to to enable csv export link 0 to disable Default is 1 e csvShowHeaders Set to to display line and column headers in the csv O to hide Default is 1 e csvSeparator define the character to use as separator in the csv Default is comma 181 CartoWeb and WMS Usage Statistics plugin statsReports e filename define a custom defined filename It may be static or contain a generation date under various formats Date formating is performed by indicating between a couple of brackets the keyword date followed by a comma and PHP date like date format see http php net date For example export_ date Ymd Hi csv Which gives for instance export_20060725 2021 csv Default is cartoweb_statsReport csv e csvTextDelimiter tells what character should be used to delimit the text in each cell It is specially useful when the character used as the csvSeparator may be WS found within the cell content Default parameter value is double quote ie e csvUseTextDelimiter set to enable text delimiter usage O to disable Default is 0 30 2 2 Server side Configuration Typical server side stat sReports ini looks like layer my_stats_layer where e layer name of Mapfile statistics layer see below Default value is stats 30 2 3 Related Elements in Mapfile In order to display map statistics the following l
116. avior of layer1 can be resumed as Update or create a layer named cartoweb_point_outline In this layer insert a new class an call it foobar the first style of this class render as red 241 Dynamic mapfile modifications Slayer2 new LayerOverlay Slayer2 gt action BasicOverlay ACTION_SEARCH Slayer2 gt name cartoweb_point_outline Slayer2 gt transparency 30 Search a layer named point_point_outline with a 30 transparency If this layer don t exist in the mapfile it will be created Smap new MapOverlay Smap gt layers array S layerl S layer2 Splugins this gt serverContext gt getPluginManager result Splugins gt mapOverlay gt updateMap map The two layers are inserted in a MapOverlay and the mapfile is updated 3 2 2 Add a feature The goal of this example is to add a feature with a specific style and transparency The layer name and transparency are given foo and 40 Slayer new LayerOverlay Slayer gt name foo Slayer gt action BasicOverlay ACTION_SEARCH Slayer gt transparency 40 SmapOverlay S this gt serverContext gt getPluginManager gt mapOverlay result SmapOverlay gt updateMap Slayer At this point the layer and its classes are created or updated Now we need to insert the feature f ms_newShapeObj MS_SHAPE_POINT Sp gt addxY 30000 20000 Sf gt set classindex Sresult gt layers 0
117. ay this myCallbackMethod Only one rule of each type may be executed on one item If two or more rules apply most specific rule will be choosen In the following rule definition only the third rule will be executed on a table myTable in a group myGroup sregistry sacddColumnselector array columa_1 column 2 Sreqistry saddColumnselector myGr 7 array column_1 7 Sregistry gt addColumnSelector myGr myTable array column_2 Sregistry gt addColumnSelector myGroup toto array column_3 238 New Plugins 2 4 3 4 Executing Rules 2 4 3 4 1 On Client Each time a table group is created it must be stored in Tables plugin in order to display it StablesPlugin Sthis gt cartoclient gt getPluginManager gt tables StablesPlugin gt addTableGroups newTableGroup Tables rules are executed automatically at the same time 2 4 3 4 2 On Server Rules execution must be done explicitly on server A call to Tables plugin applyRules method is needed for each new table group before returning it to client StablesPlugin Sthis gt serverContext gt getPluginManager gt tables readyForClientTableGroups StablesPlugin gt applyRules newTableGroup 239 Dynamic mapfile modifications 3 Dynamic mapfile modifications 3 1 Introduction This chapter describes the mapOverlay plugin This plugin allows dynamic modifications of the mapfile it can
118. ayer must be added to the mapfile Name of layer must be the one set in INI file LAYER NAME my_stats_layer TYPE RASTER DATA TRANSPARENCY 80 STATUS ON END 182 Developer Manual Part Ill Developer Manual As is implied by its name this part of the documentation is aimed at those who need to customize or extend CartoWeb for their specific needs 183 Calling Plugins 1 Calling Plugins This chapter describes the structure of SOAP calls to CartoWeb server methods in order to obtain cartographic data Warning Due to some CartoWeb evolutions please note that some parts of the current chapter may need some updates Global WSDL code can be found in file CARTOWEB_HOME server cartoserver wsdl WSDL code specific to plugins are located in PLUGIN_HOME common plugin_name wsdl inc Interesting parts from these files are copied in the following sections Complete WSDL code dynamically generated for a map ID is accessible at the URL CARTOWEB_URL cartoserver wsdl php mapId project_name mapfile_name SOAP method getMapInfo is used to retrieve server configuration information such as available layers initial state etc It shouldn t be called each time a map is requested A mechanism based on a timestamp is available to be sure configuration is up to date see Section 1 2 Call to getMapInfo SOAP method getMap is used each time a new map or related information are needed 1 1 S
119. ayer name are cartoweb_point_outline cartoweb_line_outline and cartoweb_polygon_outline See Section 10 2 1 outline ini 10 5 5 Examples of Usage toolPicker 4 outline_point_symbol this will call the symbol picker id 4 the input id is outline_point_symbol and the output id will be outline_point_symbol too Coolere kena A oe ane oomini eoo eoo Aee this will call the color picker the input id is outline_point_color and the output id will be color_return toolPicker 4 1 symbol_input color_input return_symbol return_color this will call the symbol picker and the color picker the input id is symbol_input for the first tool here the symbol picker and color_input for the second tool color picker and the output id will be return_symbol for the first tool and return_color for the second 10 5 6 Creating New Tools You can add new tools Add the new tool name in the toolArrayRef array at the begining of the script var toolArrayRef new Array colorPicker hashArray pencilArray symbolArray FYVOUrTTOONTE Create the following four functions these functions can be empty funchion VOUT TOONT TENPE e 4 4 function yourToolSetup function yourToolReturn return someValue function yourToolDisplay targetElm The Init function is used to set the incoming values It is always called when the ToolPicker starts It receives the input value recovered from the
120. be in pairs and correctly nested within their parent element The basic document structure is lt html gt lt head gt lt head gt lt 0 CVE ana SIOR lt html gt 6 4 2 Lower Case This is because XHTML documents are XML applications XML is case sensitive Tags like lt br gt and lt BR gt are interpreted as different tags This is wrong lt BODY gt lt P gt This is a paragraph lt P gt lt BODY gt This is correct 253 Code Convention lt body gt lt p gt This is a paragraph lt p gt lt body gt This is wrong lt table WIDTH 100 gt This is correct lt table width 100 gt 6 4 3 Closing 6 4 3 1 All Elements Non empty elements must have an end tag This is wrong lt p gt This is a paragraph lt p gt This is another paragraph This is correct lt p gt This is a paragraph lt p gt lt p gt This is another paragraph lt p gt 6 4 3 2 Empty Elements Empty elements must either have an end tag or the start tag must end with gt This is wrong This is a break lt br gt Here comes a horizontal rule lt hr gt Here s an image lt img src happy gif alt Happy face gt This is correct This is a break lt br gt Here comes a horizontal rule lt hr gt Here s an image lt img src happy gif alt Happy face gt IMPORTANT Compatibility Note To make your XHTML compatible with older browsers you should add an extra space before the symbol like thi
121. bject 208 Calling Plugins bbox gt stdClass Object minx gt 470000 miny gt 50000 maxx gt 860000 maxy gt 320000 layers gt Array 0 gt stdClass Object id gt swiss_layer_1 hidden gt frozen gt selected gt 1 unfolded gt 1 gt stdClass Object id gt swiss_layer_2 hidden gt 1 frozen gt selected gt 1 unfolded gt layersInit gt stdClass Object notAvailableIcon gt gfx icons swiss_project swiss na png notAvailablePlusIcon gt gfx icons swiss_project swiss nap png notAvailableMinusIcon gt gfx icons swiss_project swiss nam png layers gt Array 0 gt stdClass Object className gt LayerGroup id gt root label gt root children gt Array 0 gt swiss_layer_1 1 gt swiss_layer_2 minScale Il Vie sy is maxScale icon gt link gt aggregate gt rendering gt metadata gt Array 0 gt foo bar 1 gt stdClass Object className gt Layer id gt swiss_layer_1l label gt Swiss Layer 1 children gt Array minScale gt 0 maxScale gt 0 icon gt gfx icons swiss_project swiss icon_l png 209 Calling Plugins link gt metadata gt Array 2 gt stdClass Object className gt Layer id gt swiss_layer_2 label gt Swiss Layer 2 children
122. ble in latest CartoWeb versions e demoEdit a simple demonstration of the geographical objects edition and persistent storage tools e demoToolTips it demonstrates the usage of the tooltips using pseudo real data Follow the installation notes below and also the specific database installation in Section 1 2 5 ToolTips demo specific installation Demo data are freely downloadable Next section explains how to install them Configuration and programming details are then described 1 2 2 Installation Before installing these demos you need to have a working CartoWeb installation You can refer to the previous chapters how to install it To install the demoCW3 project you need to gather the data by launching the cw3setup php with the fetch demo option On the other hand the demoPlugins project uses plugins that work with databases Consequently some databases settings and configuration are required We describe here how to install these databases and how to use cw3setup php Step by step guide 1 Install PostgreSQL with PostGIS support Prerequisite Postgresql gt 8 0 Note If you are on Debian you can have a look at Appendix A Mapserver Debian Installation 2 Create a PostgreSQL database using the following command createdb demo_plugins 3 Integrate PostGIS functionalities in this database Typically you can type createlang plpgsql demo_plugins psql d demo_plugins f lwpostgis sql S psql
123. box bounding box to recenter on when shortcut is selected lt complexType name ArrayOfLocationShortcut gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types LocationShortcut gt lt restriction gt lt complexContent gt lt complexType gt e array list of shortcuts lt complexType name LocationInit gt sarl lt element name className type xsd string gt lt element name scales type types ArrayOfLocationScale gt lt element name minScale type xsd double gt lt element name maxScale type xsd double gt lt element name shortcuts type types ArrayOfLocationShortcut gt lt all gt lt complexType gt e className LocationInit or extended class name if project implements an extension e scales list of fixed scales e minScale global minimum scale e maxScale global maximum scale e shortcuts list of bounding box shortcuts 1 2 4 Layer Reorder This includes configuration specific to LayerReorder plugin lt complexType name LayerReorderInit gt lt all gt lt element name layers type types ArrayOfLayerInit gt lt all gt lt complexType gt e array layers are ordered from top to bottom of the displayed stack see below to LayerInit structure overview lt complexType name LayerInit gt 194 Calling Plugins lt all gt lt element name layerId type xsd string gt lt element
124. cation ini on server side do not use the recenter_doit parameter if you recenter on ids only use it with recenter on x y CartoWeb trigger Location Recenter Event observe window load initializeTown true For each initialisation we have to set the correct value inside the search_config input and add a onload event in order to initialize the town select when the page is loaded Event observe window load initializeTown true 24 3 1 2 Multi table Search Sometimes you may want to have a search that is done on multiple tables It can be done easily You have just to use the mechanisms presented in the basic sample and create in the search ini a table that looks like this config parcels provider type table config parcels provider table parcelles addresses config parcels provider aliases adr_num num adr_street street adr_zip zipcode adr_town town be sure not to have twice the same id column name in different tables or use aliases config parcels provider id parcel_id config parcels provider columns parcel_ref adr_street config parcels provider fulltextColumns parcel_ref adr_num adr_street adr_zip adr_town config parcels provider sortColumn parcel_ref adr_street config parcels provider sortDirection asc config parcels formatter type smarty config parcels formatter template search_results config parcels provider labels parcel_ref street config parcel
125. ch is selected ie layers myAutoLayer_index2 and myAutoLayer_index4 6 7 Layer Reorder Plugin Ability to reorder displayed layers could be appreciated by end user And so even if your map is well designed with largest features layers on bottom and smallest on top and or even with well used transparent properties The plugin layerReorder is designed to do so Layers could be reorder on the displayed stack to improve visibility of one layer Each layer defined in the mapfile and currently selected in legend menu and only them will be displayed in the reorder menu list 6 7 1 Plugin activation To activate the plugin add it to loadPlugins from Both CartoClient and CartoServer configuration files client_conf client ini and server_conf lt mapId gt lt mapid gt ini For instance loadPlugins layerReorder 6 7 2 Layer exclusion If you want to exclude some layers and then not allow them to be reordered have a look on client_conf layerReorder ini You will be able to exclude some layers and to choose to keep them on bottom or on top To do so use the following configuration parameters e topLayers list of all layerlds to keep on top of the genererated map Layerlds 56 Layers coreplugin must be comma separated bottomLayers same as previous one but obviously keep these layerlds on bottom Useful for example with a raster background layer 6 7 3 Transparency selector You could also add a transpar
126. children layer2 myAutoLayer_indexl layers layer2 className LayerGroup layers layer2 children myAutoLayer_index2 At least one file is generated Its name is auto mapId all map and it contains all auto layers used in file layers ini When children switching is used see Section 6 2 4 Children Switching one mapfile is generated per switch One more is generated for special switch default This way only auto layers used with the current switch are actually loaded at runtime Mapfile auto mapId all map is still generated In the following example 4 mapfiles are generated autoLayersIndexes indexl index2 index3 index4 switches switchl label Switch 1 55 Layers coreplugin switches switch2 label Switch 2 layers layerl className LayerGroup layers layerl children switchl layer2 myAutoLayer_indexl1 layers layerl children default layer2 myAutoLayer_index2 layers layer2 className LayerGroup layers layer2 children myAutoLayer_index4 e auto mapId all map contains all layers used in layers ini ie layers myAutoLayer_index1 myAutoLayer_index2 and myAutoLayer_index4 e auto mapId switch1l map contains layers used when Switch 1 is selected ie layers myAutoLayer_index1 and myAutoLayer_index4 e auto mapId switch2 map contains layers used when Switch 2 is selected ie layers myAutoLayer_index2 and myAutoLayer_index4 e auto mapId default map contains layers used when no swit
127. columnids type types ArrayOfString gt name columnTitles type types ArrayOfString gt name noRowld type xsd boolean gt name rows type types ArrayOfTableRow gt lt complexType gt tableId table ID tableTitle table title e numRows number of rows in table e totalRows total number of rows in context for future use e offset current position in context rows for future use e columnlds column IDs see Section 1 1 1 Simple Types for a description of type ArrayOfString e columnTitles column titles see Section 1 1 1 Simple Types for a description of type ArrayOfString e noRowld if true table rows contain no row IDs 187 Calling Plugins e rows list of rows lt complexType name ArrayOfTable gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types Table gt lt restriction gt lt complexContent gt lt complexType gt e array list of tables lt complexType name TableGroup gt lt all gt lt element name groupId type xsd string gt lt element name groupTitle type xsd string gt lt element name tables type types ArrayOfTable gt lt all gt lt complexType gt e groupld ID of table group e groupTitle title of table group e tables list of tables lt complexType name ArrayOfTableGroup gt lt complexContent gt lt restriction base encll Array
128. coordinate e maxy maximum y coordinate lt complexType name Point gt lt all gt lt element name x type xsd double gt lt element name y type xsd double gt lt all gt lt complexType gt e x x coordinate 185 Calling Plugins e y y coordinate lt complexType name ArrayOfPoint gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types Point gt lt restriction gt lt complexContent gt lt complexType gt e array list of points lt complexType name Shape gt lt all gt lt element name className type xsd string gt lt element name x type xsd double minOccurs 0 gt lt element name y type xsd double minOccurs 0 gt lt element name minx type xsd double minOccurs 0 gt lt element name miny type xsd double minOccurs 0 gt lt element name maxx type xsd double minOccurs 0 gt lt element name maxy type xsd double minOccurs 0 gt lt element name points type types ArrayOfPoint minOccurs 0 gt lt al1 gt lt complexType gt e className shape class name Point Bbox Rectangle Line or Polygon e x x coordinate Point e y y coordinate Point e minx minimum x coordinate Bbox or Rectangle e miny minimum y coordinate Bbox or Rectangle e maxx maximum x coordinate Bbox or Rectangle e maxy maximum y coordinate Bbox or Rectangle
129. ctory for a complete french translation e server fr po e server test fr po e client fr po 17 1 4 Compiling PO to MO To compile all PO files to MO files gettext s binary format use the following commands on client side This should be done each time configuration client or server is updated and after each system update All languages are compiled at the same time cd lt cartoweb_home gt scripts php po2mo php Warning When CartoWeb is installed in SOAP mode the script uses PHP curl functions to retrieve PO files from server to client PHP curl module must be 125 Internationalization installed 17 1 5 Example To translate texts in french for project test_project and map file projectmap follow these steps On server cd lt cartoweb_home gt scripts php server2pot php Copy lt cartoweb_home gt projects test_project po server po to lt cartoweb_home gt projects test_project po server fr po and lt cartoweb_home gt projects test_project po server projectmap po to lt cartoweb_home gt projects test_project po server projectmap fr po Edit french files with Poedit or any editor On client cd lt cartoweb_home gt scripts php client2pot php Copy lt cartoweb_home gt projects test_project po server po to lt cartoweb_home gt projects test_project po server fr po Edit french file with Poedit or any editor Merge and compile files with the following commands cd lt cartoweb_home gt scr
130. d column_id column_title return column_new_title 2 4 3 2 6 Cell Filter public function addCellFilter groupiId StableId columnId SinputcColummids Scallback Cell filter rules allow to modify content of a cell Values of columns given in parameter inputColumnIds will be transfered to the callback method for cell content calculation Parameter caliback should contain a pointer to a callback method with the following signature static function myCallbackMethod table_id column_id array OCO lmm a Ss Mycol column_2 gt value_2 return cell_value Note To return all column s data to the callback function you can use NULL Sregistry gt addCellFilter query table_name NULL array TableRulesClassName callbackFunctionName This will apply the callbackFunctionName function to all column of table table_name and the callback function will receive an array containing the values of all columns 2 4 3 2 7 Cell Filter Batch public function addCellFilterBatch groupId StableId columnId 235 New Plugins SinputColumniIds callback Cell filter rules used in batch mode allow to modify content of all cells of a given column Values of columns given in parameter inputColumnTds will be transfered to the callback method for cells content calculation Values for all rows are transfered at the same time Parameter caillback should contain a pointer to a callback method
131. d needed columns to the table roads_europe To do so you can type ALTER TABLE roads_europe ADD COLUMN source_id int ALTER TABLE roads_europe ADD COLUMN target_id int ALTER TABLE roads_europe ADD COLUMN edge_id int next line is to work around a pgRouting bug in update_cost_from_distance fixed in latest CVS ALTER TABLE roads_europe RENAME id TO id_old You can then fill the columns source_id and target_id with the assign_vertex_id function SELECT assign_vertex_id roads_europe 1 Here is the content of the roads_europe table SELECT gid source_id target_id edge_id AStext the_geom FROM roads_europe limit 3 gid source_id target_id edge_id AStext 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 Fis LLOSA LLOSS 14 MULTILINESTRING 1062096 06 4861316 234 te WOS LOST jj PAG 1 EMUT EENES HRING AOC 4 397 AVRIIIS VSA7 4 5 5 12906 IOLE TOIL 20 SEMO NES RENG EASO o O O 59S oo 5 3 lignes But if the data quality is poor you need to delete the duplicates edges they have the same source target pairs of vertices For example to check that you have duplicated edges you can type S SELECT FROM SELECT source_id target_id count AS c FROM roads_europe group by source_id target_id order by c AS foo where foo c 2 If there is duplicated edges to delete one of two rows you can type CREATE TABLE doubl
132. dRequest initializeResult handleResult CoreProvider handleCorePiugin location layers ClientResponder handiePreDrawing Sessionable loadSession createSession saveSession ClientResponder handleDrawing CoreProvider handlaCorePlugin images ClientResponder handiePostDrawing ToolProvider x x ServerCaller initislizeResult ServerCaller shandieResult handleMainmapTool a handleKeymapTool a getTools Po ToolProvider getTools i I i I i I i I ra 1 l Ajaxable ajaxGetPluginResponse i I i I i I i I i I i I I 1 I i I I j I j i i l 1 I i j I I l I i I I i l I I 1 l I 1 x x I I i see i I I I l I i l I I I l 1 I I I i I i 1 I 1 Noto i c s ony raped i vaton Not I Ah I nt k Sunya bypneaed Get a high quality version of this diagram here http www cartoweb org doc misc plugins_diagram pdf 2 2 4 Plugin Creation Check List 1 Determine if you will write a plugin or a coreplugin 2 Create a lt yourPlugin gt directory in projects lt yourProject gt plugins if you need a simple plugin Directory name will be the plugin name You can use whatever name you want except of course names of already existing plugins or coreplugins Yet it is recommended to use lowercase letters capitalizing only the first letter of each word that composes the name eg yourPluginName In case o
133. dll extension php_curl dll extension php_gettext dll The corresponding DLL files must be present in the extensions folder of PHP It should be c wamp php ext by default If you can not find it look in the PHPINFO local value for parameter extension_dir visible in php ini as well you will notice something like C wamp php ext e Restart Apache left click on the WAMP icon in the systray gt Apache gt Restart Service e Check in the PHPINFO if the new extensions loaded correctly look for a section with their name B 2 Mapserver Mapscript Install You need a Mapscript version compiled for PHP5 Win32 You can get one here http www maptools org dl mapserver 4 5 win32 php5 0 3 zip If the link doesn t work go to http dl maptools org dl and look for mapserver 4 5 win32 php5 0 3 zip or newer Note MapServer for Windows PHP3S archives are also available on CartoWeb website at http cartoweb org downloads html msw Additional instructions for installing DLL s are given in the matching README txt files e Once you have downloaded the archive uncompress it in any directory e The README txt included in the archive tells you where you must place the various files o Unzip gdal 1 2 5 zip libcurl 7 10 7_dll zip xerces_dll zip ECW_DLL zip pdfdll zip libpq zip in c WINNT System32 if you are using Windows 2000 NT c Windows System32 for XP and c Windows System for 95 98 Me o Move php_mapscript_45 d11 in
134. e template template template template borderWidth borderColor borderStyl padding e 3 hCentered zIndex textAlign orientation horizontalMargin verticalMargin horizontalBasis backgroundColor white 0 25 black solid 0 0 left verticalBasis top false verticalAlign template Se OMitacita center horizontal 12 3 4 2 Blocks Positioning CartoWeb uses a CSS like syntax for blocks description and positioning Description depends on the block type and is detailed in following sections Blocks are positioned one after the other beginning by the ones with the lowest z Index vertical position the low zIndex ed blocks are placed under the high zIndexed ones ie closer to the background When blocks have equal zIndexes those with lowest weight are processed first Eventually if blocks have identical zIndexes and weights the system will use general activatedBlocks order to make its choice Blocks with different zIndexes wil not interact except if one is marked has the other s parent in that situation the child block will be located inside the parent block instead of using the general referencial All following siblings will share the same parent block except if they have a inFlow false property Parent blocks must have lower zIndexes than their children For instance blocks mainmap zIndex blocks mainmap weight loeell blocks overview parent mainmap ut
135. e a minor impact on performances if a large number of layer is used Here s an example of a security metadata key used in layer of the mapfile METADATA exported_values security_view some_specific_parameter security_view admin won some_specific_parameter value Tidwell pure string Rib string mask_transparency 50 nmaskicorkor T255 Bisse US area_fixed_value 10 END In this example the layer containing this metadata description will only be visible for users having the admin role Note Notice the usage of the exported_values metadata key which lists the security related metadata key It is explained in Section 6 3 Metadata in Mapfile and layers ini 118 Security Configuration Now let s look the case where the metadata key is set on a layer group in the lt layers gt ini configuration file layers group_admin className LayerGroup layers group_admin children grid_defaulthilight layers group_admin metadata security_view admin In this example the admin role is set for the layerGroup called group_admin You can notice the very similar syntax as used in the mapfile Security can also be set for a whole switch see Section 6 2 4 Children Switching switches switchl label Switch 1 switches switchl security_view admin switches switch2 label Switch 2 In this case all layers set as children for this switch will only be visible for users having the admin r
136. e block will be printed right after previous block preserving the vertical alignment e caption string for table blocks only name of separated block used to describe table caption formatting e headers string for table blocks only name of separated block used to describe table headers colunms titles formatting e allowedRoles comma separated list of strings list of roles allowed to draw the current block e i18n boolean if true block content is translated using CartoWeb Gettext system i18n stands for InternationalizatioN Translated contents may be standard texts or even URLs useful for instance to display a logo adapted to the used language Some additional block properties are available but are automatically set depending on other parameter values and thus are not listed above private access PHP built in default values e type NULL e content empty string e fontFamily times e fontSize 12 e fontItalic false e fontBold false e fontUnderline false e color black e backgroundColor white e borderWidth 1 e borderColor black e borderStyle solid e padding 0 e horizontalMargin 0 93 PDF Export e verticalMargin 0 e horizontalBasis left e verticalBasis top e hCentered false e vCentered false e textAlign center e verticalAlign center e orientation horizontal e zIndex 1 e weight 50 e inNewPage false e inLastPages false e width NULL e heigh
137. e button value t ok t onclick return CartoWeb trigger YourPlugin AnotherAction gt or if you want to provide a non ajax fallback you can do it like that 141 AJAX lt input type button value t ok t onclick return CartoWeb trigger YourPlugin AnotherAction doSu Warning Adapting your templates is a tricky bit Unless you customized your templates thoroughly we recommend that you start over again your templates customization using demoCW3 or test_main as a basis as these projects templates are AJAX ready We recommend that you diff your cartoclient tpl mainmap tpl and all redefined plugin templates with the upstream This is the best way to be up to date especially if you use the latest CVS version of CartoWeb Tip Original templates patch http bugzilla maptools org attachment cgi id 126 amp action view 142 Geostatistics plugin geostats 22 Geostatistics plugin geostats 22 1 Introduction This chapter describes how to configure geostatistics functionnalities 22 2 General Behavior The Geostat plugin allows advanced cartographic representation based on attributes of geospatial data Currently there is only support for polygonal entities There will be support for ponctual symbol very soon Every vectorial formats supported by Mapserver may be use The client side of the plugin allow the specification of the mandatory and optional paramaters These param
138. e Convention alt attribute is mandatory for lt img gt tag in XHTML But it can and sometimes should have a void value alt is used to specify a replacement text when image is not loaded image unavailable not yet loaded or user deactivated images For data images a convenient alternative text should be specified but for layout only pictos it is no use to display a replacement message For instance lt img src mainmap gif width 400 height 200 alt Main map gt lt img src pixel gif width 50px height 1px alt gt 256 Unit Tests 7 Unit Tests 7 1 Introduction Unit tests are an important componant in the CartoWeb development environment The framework used for unit testing is based on PHPUnit2 http www phpunit de en index php a PEAR package For more informations abouth PHPUnit2 see http pear php net reference PHPUnit2 2 0 3 PHPUnit2 is included in the libraries shipped with CartoWeb Thus no installation is needed to run and write new tests 7 2 Writing Tests Information about writing tests for CartoWeb can be separated into two parts First part about writing Unit tests in general useful for people new to PhpUnit Then a part more specific about the infrastructure which is available in CartoWeb for writing tests 7 2 1 General Information About Writing Tests Test cases are located in directory tests for testing the core of CartoWeb and in the directories lt project
139. e Cygwin http www cygwin com When you install Cygwin be sure to select the packages tar or unzip and cvs You can also install the gettext devel package so you wont need to get an external gettext installation later If you have already installed Cygwin type the following command to see what package are currently installed cygcheck c If the packages mentioned above are not present run Cygwin setup again and add the missing packages Note To enable you to execute PHP scripts easily set the path to the PHP binary in your bashrc in C cygwin home Administrator by default export PATH SPATH cygdrive c ms4w Apache cgi bin The example above is true if the PHP binary are installed in C ms4w Apache cgi bin If you do not want to install the cvs and gettext Cygwin package you need to add also the path to the external CVS and gettext binaries export PATH SPATH cygdrive c program Files GnuWin32 bin export PATH PATH cygdrive c program Files TortoiseCvs See the note in Section 1 1 4 3 1 CartoWeb Setup with DOS 1 2 Demos 1 2 1 Introduction A few demos are embedded in CartoWeb to demonstrate the range of functionalities that CartoWeb offers and give users examples on how to implement them e demoCW3 this is an overview of the standard functionalities that are somehow 24 Installation visible for an end user in CartoWeb e demoPlugins it shows the new functionalities that are availa
140. e configuration described what layers criteria must apply to and what the conditions matching the criteria options PostGIS or ShapeFile FILTER syntax are An object like notation symetrical to the client side configuration is used Each criterion owns the following properties e layers acomma separated list of one or more layers to whom the criterion applies e options a collection of options objects with a filter property that indicates what PostGIS or ShapeFile filter to apply If you need to use double quotes within that property for instance to enclose a table field name rather user characters instead to avoid conflicts The plugin will then replace them by double quotes characters For instance criteria surf layers zone_a zone_b 58 Layers coreplugin criteria surf options surfl filter SOME_FIELD lt 1 criteria surf options surf2 filter MAX some_other_field BETWEEN 1 AND 2 6 8 4 Insertion in Layout In order to make the filter form available in the general layout a Smarty SlayerFilter tag must be included in the templates cartoclient tpl template If the AJAX mode is activated make sure that it is encapsulated within a lt div id layerFilter gt lt div gt element lt div id layerFilter gt S layerFilter lt div gt 59 Navigation coreplugin location 7 Navigation coreplugin location The plugin location is the core plugin that deals with geographic navigation
141. e meta data that can be set to mapfile s layers e hilight_color 0 255 0 255 0 255 the hilight color of a dynamically generated class wow e hilight_createlayer the hilight e hilight_transparency 1 100 the transparency for dynamically generated layers true if true a new layer will be dynamically generated for Examples Hilight using lt layer_name gt _hilight layer LAYER NAME foo END LAYER NAME foo_hilight END Hilight using class hilight LAYER NAME foo 69 Queries coreplugin query CLASS EXPRESSION _always_false_ NAME hilight STYLE END END other layer classes CLASS END END Hilight using dynamically generated layer LAYER NAME foo METADATA hilight_createlayer true hi light scolor 255225570 TiTa Menera NS parenca SON END END 9 3 3 2 Mask Mode When mask mode is requested decision is made in the following order 1 looks for a layer named lt layer_name gt _mask 2 if not found dynamically creates a mask layer by copying current layer Masking process also tries to find a layer which would hide the area outside all possible selections 1 tries to activate a layer with name set in meta data outside _mask 2 if meta data outside_mask is not set looks for a layer named default_outside_mask 3 if not found no outside mask will be displayed Here are the meta data that can be set to mapfile s layers e mask_color
142. e preferences in your favorite code editor if needed 6 3 1 2 Control Structures Control statements should have one space between the control keyword and opening parenthesis It is also recommended to use curly braces even when they are optional This is correct if condition 6 3 1 3 Function Calls Functions should be called with no spaces between the function name the opening parenthesis and the first parameter spaces between commas and each parameter and no space between the last parameter the closing parenthesis and the semicolon This is correct Svar foo Sbar Sbaz Squux 250 Code Convention 6 3 1 4 Function Definitions Function declarations follow the one true brace convention Arguments with default values go at the end of the argument list Always attempt to return a meaningful value from a function if one is appropriate 6 3 1 5 Class Modifiers Modifiers keywords public protected private are mandatory in class members and methods definitions It is recommended to use private for most members and properties Use public only for methods that needs to be accessible from outside the class In coreplugins or plugins classes it is generally better to use protected instead of private since most methods may have to be redeclared in extended classes projects plugins Then only use private for members properties you do not want to be redeclared 6 3 1 6 Nesting Avoid deep blocks ne
143. e run with one failure 261 Code Documentation 8 Code Documentation CartoWeb code documentation is generated using PhpDocumentor http www phpdoc org a JavaDoc style doc generator CartoWeb already includes version 1 3 0rc3 of PhpDocumentor 8 1 Generating Documentation Documentation is generated using script makedoc php Gel SERIUjES php makedoc php This will generate documentation in directory CARTOWEB_HOME documentation apidoc 8 2 DocBlocks DocBlocks are comments located at the beginning of a file or just before a class a method a function outside a class or a variable declaration These comments will be parsed by PhpDocumentor to generate documentation For a full description of DocBlocks see official PhpDocumentor documentation http phpdoc org docs HTMLSmartyConverter default phpDocumentor tutorial_phpDocumentor howto pkg html basics docblock 8 2 1 DocBlocks Types In CartoWeb we use e Page level DocBlocks one DocBlock for each PHP file e Class method class variable and function outside a class DocBlocks one DocBlock for each e Require include define if needed one DocBlock for each or all 8 2 2 DocBlocks Contents e Short description if needed a one line description e Long description if needed a longer description e package lt package gt file class we use one package for each directory which 262 Code Documentation contains PHP fi
144. e short is the symbolic buffer name this name will be specified in the log file and in the mail If you want to create more than one buffer you just have to populate the config file and dont forget to change the symbolic name For instance buffer short period 10 buffer short maxRequest 20 buffer long period 3600 buffer long maxRequest 500 buffer foo period 100 buffer foo maxRequest 500 16 2 3 Whitelist configuration A list of IP addresses or IP networks can be specified in the main throttling configuration file this list will contains addresses of hosts or networks that will not be taken into account by the plugin Addresses are in Classless Inter Domain Routing format if you want to include a single IP address you have to write LAT Oe Oo lV Sz 127 0 0 1 is the ip address and 32 is the network mask To include a whole IP network you have to write LOA NG 30 24 Where 192 168 3 0 represent the network and 24 the network mask In this case the whitelist will include all addresses from 192 168 3 1 to 192 168 3 255 Note that if the user s IP address can t be properly detected it is never declared as belonging to the whitelist It sometimes happens if the user s computer is behind a 121 Throttling Configuration miss configured proxy a proxy that don t properly set the HTTP_X_FORWARDED_FOR HTTP_X_FORWARDED Or HTTP_CLIENT_IP header For more information about the Classless Inter Doma
145. e side or the other e templates contains all the plugin specific Smarty templates Since HTML templates are only used in CartoClient files from templates are only called by client code e htdocs contains all files PHP pages images JavaScript or CSS files etc that may be web accessed when running the plugin Those files are dispatched in various directories depending on their nature If necessary you can create additional subdirectories For instance java if your plugin uses a Java applet To preserve the plugin independence it is strongly recommended not to add your CSS styles in the general CartoClient style sheet but to create a specific file here that will be called separately Note that it is not required to actually create the whole structure described above Only directories that contain files are necessairy For instance if a plugin only perform CartoServer actions it is no use to create client templates and htdocs directories common may be usefull if not CartoServer specific classes have to be defined There are two ways to add a plugin coreplugin to CartoWeb writing a brand new one or overriding extending an existing one 2 2 Writing a Plugin 2 2 1 Introduction If no existing plugin or coreplugin fulfils your requirements and if none offers close enough functionalities to justify an adaptation you can write a new plugin Plugins main classes client and or server if any must extend CartoWeb defin
146. earch ini If this parameter is also not set in the configuration file it will be ignored 152 Search plugin e The search_number input define the maximum number of rows to be returned by the query If this input is not set or has no value it will be ignored There is also two other inputs parameters available e offset e page They allow the creation of a navigation of the query result The offset input gives the number of rows a page of result should contains And page gives the current page number Note The form is injected in the cartoclient tp1 inside the Smarty tag search if S search_active default search E Warning Do not forget to include the Search ajax js file in your cartoclient tpl if S search_active default lt script type text javascript src r type js plugin search Search ajax js r gt lt script gt Now we must set up the result template file Create or edit the plugins search templates search_results tp1 that has been defined in the configuration file and write if table gt numRows gt 0 lt table class yourCssClass gt SEE Stnete erdee foreach from table gt columnIds item column lt th gt lt a href JavaScript order column gt t column t lt a gt lt th gt foreach aen foreach from table gt rows item row SDE lt td gt row gt rowId lt td gt foreach from row gt cells item value lt td gt lt a href JavaScript recenter
147. ease do not use special characters here optionalValues ref num other Then open the exportRtf rtf file with you favorite word editor and just add tags the same way you do it for standard components L ISREF NUM SOTHER This tags are case sensitive and have to be in UPPER CASE The optional Values parameters that you have set in the ini file have generated some hidden inputs in the HTML output These inputs are named with the prefix optRtf and the tag name lt input id optRtfref type hidden name optRtfref value gt To have a value shown in the RTF you just have to set a value to the corresponding HTML input JavaScript optRtfref value 123 Note If you want to have an optional input available in a form like a text input you can simply remove its name from the ini file Then open an HTML template and add a form field name which must contain the prefix optRtf and the tag name 11 6 Image Export CartoWeb offers 2 way to get an image 11 6 1 exportlmg To display only the map image without the other elements of the main template you can simply add export Img to the url http yourservername yourproject php export Img The template used is imgoutput tp1 in the main templates folder It can be customised to your needs 85 Exp ort Plugins plugin exportCsv exportHtml exportDxf exportRtf exportImg This plugin must be activated in your client ini list of plugi
148. ed in a drop down list When a result is clicked the map is recentered on it The JavaScript part of this plugin is based on the script aculo us http script aculo us Autocompleter 20 2 Activation The plugin needs obviously to be activated using the client_conf client ini loadPlugins parameter For instance loadPlugins auth exportPdf views locate To enable the plugin you also need to add required parts in the cartoclient tpl template In the lt head gt element if S locate_active default lt link rel stylesheet type text css href r type css plugin locate loca if S locate_active default lt script type text javascript src r type js prototype js r gt lt script gt And in the lt body gt of the document for example in the navigation folder if Slocate_active default locate_form if Tip Warning make sure that the recentering in enabled recenterActive true in client_conf location ini The hidden inputs id_recenter_layer and id_recenter_ids are needed so the recentering functionnality works correctly 20 3 Configuration 134 Locate hiii locate id 0 1 2 id of the layer in layers ini to recenter on locate label1 0 1 2 label of the locate input Note that if you use the same label as in the layers ini translations will operate locate sql1 0 1 2 SQL statement for the AJAX request to the database It must return two
149. edclientPlugin and or ServerPlugin classes which provide base plugin tools 218 New Plugins For instance class ClientYourPlugin extends ClientPlugin here comes your plugin client class definition 2 2 2 Plugin or Coreplugin First of all you have to determine if you are about to design a simple plugin or a coreplugin To be a coreplugin your plugin must be really generic and present a great interest to the CartoWeb users community since it might be included in the upstream distribution Contact CartoWeb development team for more info In most cases it is better and sufficient to create a simple plugin To activate a coreplugin update the cartoclient getCorePluginNames method in client Cartoclient php and or the ServerContext getCorePluginNames one in server ServerContext php For instance private function getCorePluginNames return array images location layers query mapquery tables yourPluginName To load a regular plugin update the 1oadPlugins parameter from client_conf client ini and or server_conf lt mapId gt lt mapId gt ini as in following example loadPlugins auth outline exportHtml 2 2 3 How Plugins Are Called As explained in Section 2 1 What are Plugins plugins are independent aggregations of PHP code that are called by the CartoWeb core classes to perform dedicated actions Plugins are called several times during the program execution
150. either config or output default is output Corresponding configuration is set in server ini and client ini see Section 17 2 Character Set Encoding Configuration Function Encoder encode must be used in the following situation e on client or server when reading a text from a configuration file SencodedText Encoder encode SreadText config Function Encoder decode must be used in the following situations e on client when outputing a text without calling 118n gt StextToDisplay Encoder decode encodedText e on client or server when calling an external module eg Mapserver for a query StextToUseInMapserver Encoder decode SencodedText config 247 Internationalization Note that function I118n gt takes an encoded text as argument and already prepares texts for output It means you don t need to call Encoder decode after a call to 118n gt 248 Code Convention 6 Code Convention 6 1 Introduction As an Open Source software CartoWeb needs to be written following some coding guidelines and or rules It is the required condition unless the developpers community isn t able to share new features and enhancements Some of those advises may seem obvious others less For all it is principaly a good way to produce more readable maintainable and portable code 6 2 General Coding Rules 6 2 1 Paths It is highly recommended to be
151. ency selector on each layer displayed with this plugin End user will so be able to choose a different transparency level for each displayed layer To activate it set enableTransparency tO true in client_conf layerReorder ini Default transparency selector values are 10 20 50 75 and 100 You could also customize transparency values available in this selector with a comma separated value in transparencyLevels A transparency value is a integer between 1 to 100 with 100 mean an opaque layer as 1 mean a nearly invisible one 6 8 Layer Filter Plugin This plugin is used to filter objects displayed on the map according to some criteria Those criteria are set by users using a special form automatically built according to the plugin configuration 6 8 1 Plugin activation To activate the plugin add it to loadPlugins from Both CartoClient and CartoServer configuration files client_conf client ini and server_conf lt mapId gt lt mapid gt ini For instance loadPlugins layerFilter 6 8 2 Client Configuration Client configuration is mainly used to described what the filter form must look like Aside from a i18n parameter a boolean telling if form inputs titles and labels must be internationalized the configuration uses an object like notation to list filter form inputs and their properties Three types of inputs are available radio buttons checkboxes and dropdowns Each input config object has a criterion name a
152. enerated and displayed on the fly might not work with buggy IE attachment generated on the fly but a dialog box asks the user weither the file must be opened or saved link PDF file is actually written on the server and a link pointing towards it is displayed redirection PDF file is written on the server and than user s browser is automatically redirected towards it general filename string indicates how generated PDF files must be named It is possible to specify a date formatting using PHP date format see 88 PDF Export fpitigiit http php net date Default is map date dMY His pdf which gives for instance map 03Jan2005 193256 pdf e general distUnit mmlcmlptlin unit used to measure blocks distance properties Only one unit can be used in the whole configuration e general horizontalMargin float horizontal distance between the sheet border and the useful area in distUnit e general verticalMargin float vertical distance between the sheet border and the useful area in distUnit e general allowedRoles comma separated list of strings list of roles allowed to print PDF documents e general importRemotePng boolean if true remote PNG files gathered using a URL are copied in a local directory before being included in the PDF document This option is recommended when using physically separated CartoClient and CartoServer See Chapter 4 Configuration Files e general extraFonts comma se
153. ent Level When the Cartoclient s asynchronous mode is triggered the action is used to determine what subset of each plugin s logic should be processed Processing a subset of a plugin s logic is achieved by changing it s enablement level Enablement levels are by default set to Full i e the whole logic is processed 277 AJAX Implementation Here are the yet available enablement levels e Load The plugin is loaded e Process The plugin is loaded and handles GET POST Requests e ServerCall The plugin handles GET POST requests builds overrides server request and handles server result e Full The plugin s whole logic is executed Note that all enablement levels perform a Sessionable saveSession 12 3 Making Your Plugin Ajaxable An ajaxable plugin has the ability to refresh the CartoWeb GUI asynchronously if the project using it enables the AJAX mode see how to enable AJAX in a project Section 21 2 Make Your Project AJAX Enabled Please have a look at the wiki for an up to date howto explaining how to make a plugin ajaxable http www cartoweb org cwiki HowToAjaxablePlugin 278 Mapserver Debian Installation Appendix A Mapserver Debian Installation See CartoWeb wiki at http cartoweb org cwiki DebianPackages 279 Apache amp Mapserver Windows Manual Installation Appendix B Apache amp Mapserver Windows Manual Installation This page describes the step by step procedure to install Carto
154. ers sent through Layers request see Section 1 3 3 1 Layers Request Unused when bounding box is not specified e defaultMaskMode mask mode for new layers returned by query and but not yet in array querySelections Unused when queryAllLayers false e defaultHilight highlight for new layers returned by query and but not yet in array querySelections Unused when queryAllLayers false e defaultTableFlags table flags for new layers returned by query and but not yet in array querySelections see Section 1 1 3 Tables for a description of type TableFlags Unused when queryAllLayers false e querySelections list if query selections It contains all objects that must be hilighted and can be used to maintain persistence of a selection 1 3 6 2 Query Result lt complexType name QueryResult gt lt all gt lt element name className type xsd string gt lt element name tableGroup type types TableGroup gt a lt complexType gt e className QueryResult or extended class name if project implements an extension e tableGroup group of tables which contains query results one table per layer 1 3 7 Outline The Outline plugin allows to draw shapes on the main map Shapes can also be drawn as a mask ie as holes in a rectangle covering map It returns total area covered by shapes Outline request is not mandatory As Outline plugin is not a core plugin it must be activated in order to use the follow
155. es ZoomPointLocationRequest minOccurs 0 gt lt element name recenterLocationRequest type types RecenterLocationRequest minOccurs 0 gt lt element name locationConstraint type types LocationConstraint minOccurs 0 gt lt all gt lt complexType gt 199 Calling Plugins e className LocationRequest or extended class name if project implements an extension e locationType type of location e bboxLocationRequest bounding box request parameters see Section 1 3 5 1 1 BBox Request e panLocationRequest panning request parameters see Section 1 3 5 1 2 Pan Request e zoomPointLocationRequest zoom recenter on point parameters see Section 1 3 5 1 3 Zoom Point Request e recenterLocationRequest recenter on IDs parameters see Section 1 3 5 1 4 Recenter Request e locationConstraint constraint to be respected when location request is executed 1 3 5 1 1 BBox Request lt complexType name BboxLocationRequest gt lt all gt lt element name bbox type types Bbox gt lt all gt lt complexType gt e bbox bounding box to be recentered on see Section 1 1 2 Shapes for a description of type Bbox 1 3 5 1 2 Pan Request lt simpleType name PanDirectionType gt lt restriction base xsd string gt lt enumeration value VERTICAL_PAN_NORTH gt lt enumeration value VERTICAL_PAN_NONE gt lt enumeration value VERTICAL_PAN_SOUTH gt
156. esses provider columns adr_num adr_street adr_zip adr_town config Adresses provider fulltextColumns adr_num adr_street adr_zip adr_town config Adresses provider sortColumn adr_num config Adresses provider sortDirection asc config Adresses provider sortPriorities adr_num adr_street adr_zip adr_town config Adresses provider labels adr_num adr_street adr_zip adr_town config Adresses formatter type smarty config Adresses formatter template search_results The dsn correspond to your dsn dataBase connexion string For more information please see the php PEAR corresponding page http pear php net manual en package database db intro dsn php The encodingContext correspond to the context in your client_conf client ini see below code The config X XXX is used for making a differentiation on tables The config Adresses provider type defines the type of query that should be done on the table Value can be o fulltextTable That means the search is a textual search ilike clause that will be done on the fields listed in the config Adresses provider fulltextColumns o table In this case a where clause should be set see Section 24 3 1 1 Guided Search o user defined see Section 24 3 1 5 Writing a Formatter The config Adresses provider table specifies the name of the table to query The config Adresses provider aliases defines column names aliases This could be useful if there are t
157. esses_init_street formatter template init_adresse_adr_street_select Here is the content of the init_adresse_town_select tpl file t Town t lt br gt lt select name sSearch_adr_town_init id search_adr_town_init onchange javascript initializeStreet gt 156 Search plugin lt option value gt amp nbsp lt option gt foreach from table gt rows item row lt option value row gt rowId gt foreach from Srow gt cells item value value foreach lt option gt foreach lt select gt Here is the content of the init_adresse_adr_street_select tpl file t Street t lt br gt lt select name search_adr_street_init id search_adr_street_init onchange search gt lt option value gt amp nbsp lt option gt foreach from Stable gt rows item row lt option value Srow gt rowId gt foreach from Srow gt cells item value value foreach lt option gt foreach lt select gt Now we have to setup the search tp1 file lt div id search_div gt lt fieldset gt lt legend gt t My Title t lt legend gt lt br gt here we inser the placeholder for the select s gogr gt lt div id town_select_div gt Here comes the list containing the towns lt div gt Joe gt lt div id street_select_div gt Here comes the list containing the streets lt div gt Sloe 7 lt input type hidden id search_config name search_config value
158. ests directory The best way to get started is to have a look at the test_main project for a starting point 7 2 2 3 1 Invoking tests for a specific project For now only the command line can be used for invoking tests for a specific project An environment variable CARTOWEB_TEST_PROJECT can be used to define which test to launch Under a Unix like shell enviroment the command line to use is CARTOWEB_TEST_PROJECT lt myproject gt lt php bin gt phpunit php projects_AllTests projects AllTests php 7 3 Running Tests Unit tests are runned using the command line interface CLI To run a test case or a test suite type the following command in directory lt cartoweb3_root gt tests lt php bin gt phpunit php lt test class gt lt php file gt Where lt php bin gt is the PHP binary lt test class gt is the name of the test class AllTests client_AllTests client_CartoclientTest etc and lt php file gt is the name of the PHP file containing the test case client CartoclientTest php Result should look like this PHPUnit 2 0 3 by Sebastian Bergmann Time 0 0410950183868 There was 1 failure 1 testpointtobbox expected same lt 113 gt was not lt 123 gt home yves cartoweb3 proto2 tests common BasicTypesTest php 59 home yves cartoweb3 proto2 tests phpunit php 24 FAILURES Tests run 12 Failures 1 Errors 0 Incomplete Tests 0 Content type text html X Powered By PHP 5 0 1 In this case 12 tests wer
159. esult or extended class name if project implements an extension e area total area for all shapes 1 4 Examples 207 Calling Plugins The following examples show simple SOAP calls using PHP To use these examples with your CartoWeb server you ll have to modify the map ID and the layer names Please note that in these examples access to resources uses symbolic links see Chapter 4 Configuration Files 1 4 1 Retrieving Server Configuration First thing to do is to declare the SOAP client Class SoapClient will need the WSDL code dynamically generated by script cartoserver wsdl php lt php Sclient new SoapClient http url to server cartoserver wsdl php mapld swiss_project swiss Method only needs map ID as argument EIEN result Sclient gt getMapInfo swiss_project swiss printlrmSresult jy Ca ohimn S Ocha li tiS nae print Sfault gt faultstring o gt Result is shown below It includes server configuration for the corresponding project and mapfile stdClass Object timeStamp gt 1107043488 mapLabel gt Switzerland keymapGeoDimension gt stdClass Object dimension gt stdClass Object width gt 100 height gt 100 bbox gt stdClass Object minx gt 485000 miny gt 65000 maxx gt 835000 maxy gt 298000 initialMapStates gt Array 0 gt stdClass Object id gt default location gt stdClass O
160. eters in the ini file of the layers coreplugin userLayerGroup root root is the name of the layerGroup in which user layers will be added 25 5 Define where to link a geonetwork catalog 162 OGC Layer Loader plugin To do so in client_conf ogcLayerLoader ini set the following parameters in the ini file of the plugin urlCatalog http my linked geonetwork catalog 163 WMS Browser Light foluain 26 WMS Browser Light 26 1 Introduction plugin wmsBrowserLight plugin allows you to add WMS layers to your map using the ogcLayerLoader plugin Main difference between the wmsBrowerLight and the wmsBroser plugin is the managment of the server list The plugins manage WMS servers compatible with version 1 1 1 of the OGC WMS spec Using the wmsBrowerLight plugin you have three ways to add specify the server end point url e Simply type in the text box the server you heard about like http mywmsserverurl iheard about Do not set the version or any other parameters Define a list of WMS servers using the ini file of the plugin The servers will be presented to the end user in a list box e Connect to a GeoNetwork node having metadata on WMS services and load server urls from this catalog 26 2 Plugin Activation To activate the plugin load ogcLayerLoader from both CartoClient and CartoServer configuration files and wmsBrowserLight plugins from CartoClient configuration files client_conf client ini a
161. eters will be passed to the server side which will create the map layer and return some informations about the dataset 22 3 Server side Configuration 22 3 1 Mapfile Configuration On the server side the first configuration step is made within the mapfile The only requirement is a least on polygonal layer which expose at least one attribute You may consider an attribute as exposed if you can use it as CLASSITEM for this layer You must add one and only one class to this layer It will be use as template for the generated classes You may use this class to define border color label or other default parameter You should not add this layer to the layers ini configuration file 22 3 2 geostat ini Configuration Choropleth layers are managed differently then ordinary layer within cartoweb server_conf mapId geostat ini is used to define layers that may be used for geostatistics Take a look to a sample of this file geostat 0 mslayer region_geostat_fill geostat 0 label Region geostat 0 choropleth true geostat 0 choropleth_attribs POPULATION HOUSINCOME geostat 0 choropleth_attribs_label Population Average house income These example represents a single layer definition The general for of parameter is geostat n key value nis an incremental number first layer of the config file is 0 143 Geostatistics plugin geostats key is a parameter for this layer value is the value associated to the following para
162. f a coreplugin there is no way to create a coreplugin in a project context Coreplugins can only be integrated in the upstream application It is not recommended to do so without CartoWeb developers agreement because of compatibility troubles that may occur when upgrading etc 3 Create subdirectories to store all plugin related resources files and templates 4 Create client server common if your plugin as CartoClient CartoServer and respectively common parts 5 Create your main PHP classes files Those files must be named using the first letter capitalized name of your plugin prefixing it with Client or Server 221 New Plugins for client or server components eg Client YourPlugin php ServerYourPlugin php YourPlugin php 6 Extend clientPlugin and or ServerPlugin CartoWeb classes in the matching above files and name the result classes using their files names with no php For instance lt php version Id ServerYourPlugin php v 1 8 2005 02 23 11 52 43 johndoe Exp zt class ServerYourPlugin extends ServerPlugin 7 Make your classes implement needed interfaces and redefine corresponding methods Note that the common part class YourPlugin does not have to extend or implement any CartoWeb class or interface It is used as a container for common data and treatment used by client and server classes 8 If your plugin is implementing ServerCaller and ClientResponder you will need to write the
163. f attributes used for edition Each value represents the attribute name and type separated by a pipe symbol Only attributes with type set are editable Warning Attribute types available values are string and integer e edit_rendering OPTIONAL string comma separated list of rendering type used when displaying the edition form Each value represents the type of input the user will see in the form when editing a feature Attribute type available values are o empty if no type is set an input type text is displayed This is the default behaviour o hidden input type hidden o textarea textarea element Warning edit_rendering is absolutly optional If edit_rendering is not set all inputs will be simple text input 14 3 How To In this section are described the steps to get the edit plugin working on a cartoweb project e First you need a PostgreSQL database with postGIS enabled Let s say it is named edit_db for the following explanations At that point you may launch demoEdit_schema sql and demoEdit_data sql located in the lt CARTOWEB_HOME gt projects demoEdit directory 112 Editing plugin edit This will create 3 sample geometry tables one for each type of geometry In CartoWeb you ll have to load the edit plugin in your project on both client and server sides loadPlugins edit Then you ll need to configure the plugin by setting t
164. f you want to import both CartoWeb and WMS logs in the same database e nbDays Sets the number of days to keep in the raw data e db connection string 180 CartoWeb and WMS Usage Statistics plugin statsReports 30 2 Statistics Visualization StatsReports visualization plugin is a standard CartoWeb client and server plugin It must be activated on both sides 30 2 1 Client side Configuration Typical client side stat sReports ini looks like datas cartoweb label Statistiques Cartoweb datas cartoweb dsn pgsql MYUSER MYPASSWORD localhost MYDB datas cartoweb prefix stats datas wms label Statistiques WMS datas wms dsn pgsql MYUSER MYPASSWORD localhost MYDB datas wms prefix statswms tempDsn pgsql MYUSER MYPASSWORD localhost MYTEMPDB nColors 16 where e datas label environment label for the GUT e datas dsn database connection e datas prefix table prefix to use more than one environment on one database e tempDsn database connection for temporary tables could be the same as other database connection e nColors number of colors for map statistics linear distribution Please note that there should be one session at a time for each CartoWeb user This is due to the cache management one graph map per user Additional parameters are available to configure the cvs export of the tabular data outputCsv 1 csvShowHeaders 1 csvSeparator en filename st
165. fficient when you only need to adapt the layout e extend the main PHP classes to add your own methods or overload existing ones This approach is required when you need to add some PHP code to the plugin Both approaches are not incompatible and may be combined to obtain desired result See Section 2 3 4 Combining Both Approaches for more explanations 2 3 2 Overriding a Plugin Overriding a plugin is the simplest way to adapt it to your needs It is done by duplicating the plugin files at least the ones you want to adapt in your project frame For more information about projects handling see Section 2 4 Projects This approach is recommended when you want to use your own versions of the plugin templates or resources Moreover you can add any new resources files that will be called in your customized templates However you will not be able to replace or add PHP files except PHP pages in the plugin htdocs To adapt a plugin server side behavior PHP classes you have to extend the plugin which is explained in Section 2 3 3 Extending a Plugin Say for instance you want customize the layers coreplugin by modifying its template Layers tp1 and rewriting some of its JS tools stored in layers js Than your project adapted coreplugin will look like projects lt yourProjectName gt coreplugins layers projects lt yourProjectName gt coreplugins layers templates projects lt yourProjectName gt coreplugins layers
166. gResultsTable e the connexion string to the database dsn option 171 Bounding box history plugin plugin bboxHistory 28 Bounding box history plugin plugin bboxHistory The bboxHistory plugin allow the user to navigate through the bbox he or she visits just like the back and forward buttons of a web browser Note that the ajax mode must be enabled to use the plugin and it has no configuration file 28 1 Plugin activation To activate the plugin add it to loadPlugins from CartoClient configuration file client _conf client ini For instance loadPlugins bboxHistory You also need to add the plugin s template into the project template templates cartoclient tpl For instance include file toolbar tpl group 1 header 1 include file toolbar tpl group 2 bboxHistoryForm 172 Saving Map Context as an URL pingin exporttinkio 29 Saving Map Context as an URL plugin exportLinklt The exportLinklIt plugin displays in CartoWeb interface a URL that saves the main caracteristics of the current page Saved data are selected layers layers switch id recentering info center and scale mapsize as well as outlined shapes and map queries 29 1 Plugin Activation To activate the plugin add it to loadPlugins from CartoClient configuration file client_conf client ini For instance loadPlugins exportLinkIt You also need to add the plugin output variable linkIt into the project main
167. graphic 53 Z zoomFactor 61 293
168. gt Array minScale gt 1 maxScale gt 20 tC On Ss link gt metadata gt Array locationInit gt stdClass Object className gt LocationInit scales gt Array 0 gt stdClass Object label gt 1 50000 value gt 50000 1 gt stdClass Object isabel 1 100008 value gt 100000 2 gt stdClass Object Hasel 1500000 value gt 500000 minScale gt 25000 maxScale gt 1000000 shortcuts gt Array 0 gt stdClass Object label gt Romandie bbox gt stdClass Object minx gt 475000 miny gt 65750 maxx gt 670000 maxy gt 212000 1 4 2 Getting a Map Using a Point and a Scale The simpliest way to obtain a map from CartoWeb server is to send an X Y location 210 Calling Plugins and a scale First thing to do is to declare the SOAP client Class SoapClient will need the WSDL code dynamically generated by script cartoserver wsdl php lt php Sclient new SoapClient http url to server cartoserver wsdl php mapld swiss_project swiss The map ID is required also in the request object Srequest gt maplId swiss_project swiss In this example only main map and scale bar are requested So key map s isDrawn attribute is set to false Srequest gt imagesRequest gt className ImagesRequest Srequest gt imagesRequest gt mainmap gt isDrawn true Srequest gt im
169. he layer_ids in the editLayers parameter in the edit ini file editLayers edit_poly edit_line edit_point In your mapfile in the corresponding LAYER you ll have to set the specific metadatas as following LAYER NAME edit_poly STATUS ON TYPE POLYGON CONNECTIONTYPE POSTGIS CONNECTION dbname edit_db user www data password www data host localhost DATA the_geom from select the_geom oid parc_id name culture surf parc_type from edit_poly TEMPLATE ttt Begone LABELITEM name CLASS NAME class STYLE COLOR BURSO rss OUTLINECOLOR 255 50 50 END LABEL ERTA END END METADATA lid altributve string parc anA Ey query_returned_attributes parc_id name culture surf parc_type edit_table edit_poly PostGIS table edit_geometry_column the_geom PostGIS geometry column edit_geometry_type polygon PostGIS geometry type Vreyolibie eyeaiel Yah edit_attributes parc_id name string culture string surf parc_type integer list of the editab edit_filter mapserver filter END END Warning Make sure that your edit_attributes list does not include spaces between attributes 113 Security Configuration 15 Security Configuration 15 1 Introduction Access to different parts of the CartoWeb can be allowed or denied according to who is currently using the application The following concepts are used in this chapter Security Mechanisms Concepts User Representation of a
170. he logs and stores raw data in a PostGreSQL database 30 1 1 How To Build Source of Java application are located in scripts stats To build this project you need e Maven 2 http maven apache org e Java Runtime Environment JRE gt 1 5 e A PostgreSQL database The other external librairies are taken care of by Maven Now you must set sTATS_DB environment variable On Linux it will look like export STATS_DB jdbc postgresql localhost MYDB user MYUSER amp password MYPASSWORD This is needed by post build automatic tests Then simply run following build command mvn clean install 30 1 2 Running Import CartoWeb logs are imported using the following command remove end of line backslashes on Windows java Xmx1G cp target stats standalone jar org cartoweb stats imports Import initialize tableName stats db jdbc postgresql localhost MYDB user MYUSER amp password MYPASSWORD logDir my log dir format cartoweb 175 CartoWeb and WMS Usage Statistics i iigin stats Reports logRegexp d d d d d d d d log where e Xmx1G tells Java to use a maximum of Gb for the import This should be enough even for very large log files e initialize tells the application to create the database Remove this option to use incremental import once the database has been created e tableName table prefix Allows to use different table prefixes in order to have several environment
171. he options that can be set mapSizesActive boolean if true displays a drop down list of available mapsizes if false a fixed size is used defined by the two following parameters mapWidth mainmap width in pixels if mapSizesActive false mapHeight mainmap height in pixels if mapSizesActive false mapSizes width 0 1 2 available mainmap width in pixels for mapsize when mapSizesActive true mapSizes height 0 1 2 available mainmap height in pixels for mapsize when mapSizesActive true mapSizes label 0 1 2 label that describes mapsize appears in drop down list If not specified a lt width gt x lt height gt pattern is used as the label mapSizesDefault integer indicates the default mapsize to be used among the above Only when mapSizesActive true maxMapWidth maximum allowed width in pixels of the generated mainmap when setting manually the mapsize using GET or POST requests If no value is specified default max width is 1500 px maxMapHeight maximum allowed height in pixels of the generated mainmap when setting manually the mapsize using GET or POST requests If no value is specified default max height is 1000 px If no mapsize settings are found the default mapsize is 400x200 pixels 8 1 2 Keymap and Scalebar Options The plugin images can also deal with few keymap and scalebar options e collapsibleKeymap if true keymap is shown on map and possibly hidden 63
172. how view option Finally push the save button You may also save a new view using an existing view To do so load the desired view as described in Section 13 3 1 Loading Views modify it as explained in Section 13 3 2 3 Updating a View and push the Save as new view button 13 3 2 2 Deleting a View Load the view you want to delete as shown above and push the Delete button A JavaScript confirmation pops before irreversible deletion 13 3 2 3 Updating a View To modify a view map properties selected layers annotations map extent etc as well as its metadata title visibility etc load it as seen above If your changes only concern metadata simply update the dedicated form fields and push the Update button To update the view map properties check the Memorize form option Metadata and selected view ID are then memorized while you perform your changes pans zooms annotations layers selections etc Eventually push the Update button 110 Editing plugin edit 14 Editing rplugin edit The edit plugin allows users to edit geographical data from their web browser 14 1 Client side Configuration 14 1 1 edit ini Here are the options that can be set on the client e general allowedRoles comma separated list of the roles that are allowed to use the edit plugin e insertedFeaturesMaxNumber integer number of new features that user is allowed to draw for insertion in the database
173. hts value are e weightZoomin 10 e weightZoomout 11 e weightPan 12 e weightFullextent 14 e weightQueryByPoint 40 e weightQueryByBbox 41 e weightQueryByPolygon 42 e weightQueryByCircle 43 e weightOutlinePoint 70 e weightOutlineLine 71 e weightOutlineRectangle 72 e weightOutlinePoly 73 e weightOutlineCircle 74 e weightDistance 80 e weightSurface 81 Use a negative value to deactivate a tool 40 Configuration Files weightFullextent 1 4 4 2 Grouping Tools Icons CartoWeb offers the possibility to display tools icons in separated locations of its interface For instance browsing icons may be displayed in the general toolbar whereas outline pictos may only appear in a dedicated folder To do so simply add an integer group index for each tool in matching plugin configuration file For instance groupDistance 2 By default all tools icons are affected to group 1 Note that the parameters naming convention is the same than for weight parameters see Section 4 4 1 Ordering Tools Icons only substituting the group prefix to the weight one It is also possible to specify a global plugin group index that will be applied to all the given plugin tools if no individual group index has been set To do so use the groupPlugin in the matching plugin configuration file as follows groupPlugin 3 To take benefit of the tools groups update the main CartoWeb template file templates cart
174. implement on the fly javascript event you can attach some event on existing elements via the attachAction function AjaxHandler attachAction target_element_id type_of_event callback_function json_defined_argument for example AgiaxHanClicrratiachAct lon elma nmi amu Gilanc kal ammo G ciel om Lc ES OU Ce OEEO irr 21 2 4 2 2 Custom Functions You can define custom functions as well see the oneCustomFunction above But you will need to explicitly call these functions from buildPostRequest onBeforeAjaxCall Or onAfterAjaxCall The function is called like this this oneCustomFunction 21 2 4 2 3 Log Messages You can output some notice or warning in the JSTraceDebugger windows by adding Logger note Some text that will appear in the debugger You can also use send header error warn trace or confirm They have slightly different styling See file Logger js for details 21 2 4 3 Initialize plugin You may want to call some functions or define some variables on page load To do so simply add your plugin into the AjaxPlugins initializablePlugins array like this add your plugin to the list of Ajax initializable plugins AjaxPlugins initializablePlugins push AjaxPlugins YourPluginName Add this after your main AjaxPlugins YourPluginName 21 2 5 Templates Adaptation To trigger the actions defined in YourPlugin ajax js you simply call them like this lt input typ
175. in projects yourProject coreplugins images templates with the templates of the overriden part of the coreplugin Remember templates are stored in the overriden part and PHP classes in the extended part lt vowrmieges gol gt lt input type text name testField value SimagesTest gt lt php version Id ClientYourProjectImages php v 1 8 2005 02 23 11 52 43 johndoe Exp of class ClientYourProjectImages extends ClientImages indicates that we want to use current plugin instead of regular images plugin public function replacePlugin return images overloaded method 226 New Plugins public function renderForm Smarty Stemplate a Simage2 Smarty var must have been added in cartoclient tpl Stemplate gt assign image2 Sthis gt drawNewImagesField parent renderForm Stemplate additional method private function drawNewlImagesField Ssmarty new Smarty_Plugin S this gt getCartoclient this Ssmarty gt assign imagesTest Foobar return S smarty gt fetch yourImages tpl EPa Don t forget to activate the extended plugin in projects yourProject client_conf client ini loadPlugins yourProjectImages 2 4 Special Plugins 2 4 1 Export Plugins Export plugins allow to export maps and data Concepts described below provide tools to help writing such plugins In brief export plugins follow these steps in order to generate
176. in search in your project directory The config Adresses provider labels specifies the label of the columns that should be shown the label will be used in the translation files Now we must set up the form that will be used for doing the search Edit or create the plugins search templates search tpl file and write lt div id search_div gt lt fieldset gt lt legend gt t My Title t lt legend gt lt br gt lt table width 100 gt lt tr gt lt td gt t Street t lt td gt lt td gt lt input type text id search_adr_street name search_adr_street size 13 gt lt td gt ices SETS lt td gt ehecke teowas eN lt td gt lt td gt lt input type text id search_adr_town name search_adr_town size 13 gt lt td gt RI EnS 151 Search plugin lt table gt lt p gt lt input type submit value t Search t class your_form_button_class onclick JavaScript CartoWeb trigger Search DoIt return false gt lt input type hidden id search_config name search_config value Adresses gt lt input type hidden id search_sort_column name search_sort_column value adr_num gt lt input type hidden id search_sort_direction name search_sort_direction value asc gt lt input type hidden id search_number name Search_number gt lt div id search_results_div gt lt div gt lt p gt lt fieldset gt lt div gt Each field present in the ful
177. in Routing format see http en wikipedia org wiki Classless_Inter Domain_Routing 122 Internationalization 17 Internationalization 17 1 Translations Translation handling in CartoWeb was designed to use gettext http www gnu org software gettext manual However internationalization architecture is ready for other translation systems Note Scripts detailed below are only available in command line prompts DOS shell They cannot be launched using a web browser 17 1 1 Configuration For now only gettext translation system is implemented If gettext is not installed you can use a dummy translation system which translates nothing To use gettext you will need to have PHP gettext module installed Translation system is now automatically set to gettext if gettext is installed otherwise it s disabled Parameter 77 SnClass is now deprecated 17 1 1 1 Unix like In Unix like environments file etc locale alias contains aliases to installed locales For each language used a line must be present in this file The alias fr in the example below must point to a locale installed on the system Pie ier Cit WSO 83S Si You will need to run locale gen after editing etc locale alias to regenerate system s locales To install a locale on a Debian installation use following command with root priviledges dpkg reconfigure locales If package locales has never been installed you have to install it before
178. in Specific Permissions The main part of permissions is set in the different plugins of CartoWeb For instance permissions related to which layer can be viewed are set in the layer plugin 117 Security Configuration configuration files and pdf printing permissions in the pdf plugin These sections either describes the plugin permissions which can be used or make references the the corresponding chapters 15 4 1 Layers Related Permissions It is possible to restrict which layer can be viewed by a set of users For instance only logged in admin users can be allowed to view security sensitive layers These layer permissions are inherited by children It means that if a parent LayerGroup is not allowed to be viewed then all the children won t be visible The permissions for layer must be activated in the layers ini CartoClient configuration file and are set in the metadata of the mapfile or the lt layers gt ini configuration file The concept of metadata in mapfiles and ini file is described in Section 6 3 Metadata in Mapfile and layers ini The metadata key name which can be used is called security_view and contains a coma separated list of roles which are allowed to view this layer If no such metadata key is associated to a layer or layerGroup anyone can see the layer Heres the description of the layers ini configuration file e applySecurity True if the security check of layer access is activated It might hav
179. in your project Please compare with the latest cvs version of the toolbar tpl file to be sure you have the correct conditional code Finally right before the lt body gt closing tag of your templates cartoclient tpl add ie Sika eleran es A eS hilatselene R E 29 2 Plugin Configuration Generated URL GET parameters may be obfuscated or compressed by setting the compressUr1 to true default is false in client_conf exportLinkIt ini When obfuscation compression is activated regular URLs with standard CartoWeb GET parameters are still accepted Generated URL may be rather long and thus overflow browsers or servers limits urlMaxLength can be used to make CartoWeb output a warning message when the generated URL is longer than the specified value For instance compressUrl true urlMaxLength 2000 Note The Generated URL will only contains the query parameters if the queried layers have the id_attribute_string metadata specified in the mapfile see Section 9 3 2 Meta Data 174 CartoWeb and WMS Usage Statistics ipigi Stats Reporte 30 CartoWeb and WMS Usage Statistics plugin statsReports StatsReports plugin allows to visualize statistics on CartoWeb and WMS usage Results can be shown in a form of tables charts or maps 30 1 Import and Reports Statistics are generated out of CartoWeb s Accounting plugin output or out of Apache logs for WMS statistics A Java application proccesses t
180. ing request result objects 1 3 7 1 Outline Request lt complexType name Color gt lt all gt lt element name r type xsd int gt lt element name g type xsd int gt lt element name b type xsd int gt lt o cull lt complexType gt 205 Calling Plugins e r red e g green e b blue lt complexType name ShapeStyle gt lt all gt lt element name symbol type xsd int gt lt element name size type xsd int gt lt element name color type types Color gt lt element name outlineColor type types Color gt lt element name backgroundColor type types Color gt lt element name transparency type xsd int gt lt all gt lt complexType gt e symbol index of Mapserver symbol e size size of shape e color color e outlineColor outline color e backgroundColor background color e transparency transparency lt complexType name LabelStyle gt lt all gt lt element name font type xsd int gt lt element name size type xsd int gt lt element name color type types Color gt lt element name outlineColor type types Color gt lt element name backgroundColor type types Color gt lt all gt lt complexType gt e font index of Mapserver font e size size of font e color color e outlineColor outline color e backgroundColor background color lt complexType name StyledShape gt lt all gt lt element name ShapeSty
181. iny DocBook environment D 1 2 Create a Symbolic Link to Documentation Source Create a symbolic link in the Tiny DocBook install directory pointing to the CartoWeb documentation sources lt cartoweb_home gt documentation user_manual source like that ln s CARTOWEB_HOME documentation user_manual source D 1 3 XHTML Generation Then to generate an XHTML version of the documentation execute as follow E configure make xhtml Output result will be generated in xhtm1 directory D 1 4 PDF Generation To generate a pdf version of the documentation execute instead S CONTIGUE make pdf 288 DocBook Documentation Generation Resulting pdf will be generated in book pdf file Note You need to have at least a JRE or JDK installed on your system in order to generate PDF The environment variable JAVA_HOME must also be rightly set e g export JAVA_HOME dir_path_where_jre_is_put_on_your_system D 2 Documentation Generation on Windows using Cygwin At this time the only known way to generate xhml or pdf version of the documentation on Windows is by using Cygwin You will need to install the following Cygwin packages libxml2 libxslt make Then follow the same instructions as for UNIX like system Section D 1 Documentation Generation on UNIX like System 289 Index Index A Accounting 132 AJAX 136 all 117 anonymous 117 applySecurity 118 areaFactor 73 area
182. ion of these options makes the bulk of this user manual Modifying existing plugins or writing new ones requires some acquaintance with PHPS5 as it involves some coding The related documentation is thus reported to the developer s part of this manual see Section 2 1 What are Plugins but that shouldn t deter anybody from experimenting with it Each plugin directory contains one or more subdirectories Here are all the possible subdirectories e client Client side plugin code e common Client and server code e htdocs Web accessible directory e server Server side plugin code templates Smarty templates 2 4 Projects The aim of projects in CartoWeb is to clearly separate mainstream files from project specific files Developers should thus only work in projects and not modify add delete files in the root directory This will ensure smooth updates The directory projects my_project has exactly the same structure as the root directory shown above Section 2 2 Global Directory Structure Files added in directory projects override corresponding files of the root directory For instance if you want to change the layers template i e basically the representation of the layers hierarchy simply copy the default coreplugins layers templates layer tpl tO projects my_project coreplugins layers templates layer tpl and make your changes there For more information about projects see Chapter 3 Projects Ha
183. ion on line 392 in client en po e Check if you have several fuzzy entries in your merged po file the file that is automatically created by gettext merging the client and server po files This happens when you have used the same msgid in different po files Note Each po file contain a single fuzzy entry at the beginning this should not be removed fuzzy MS msgstr POT Creation Date 2005 09 13 09 36 0200 n e Gettext automatically comments msgid and msgstr that are not found anymore in your templates Commented lines start with Sometimes this is unwelcome simply uncomment the lines e If your CartoWeb profile is set to production Section 4 1 Common client ini and server ini Options do not forget to clean the temporary templates files by typing php cw3setup php clean 127 Internationalization See Section 1 1 3 2 4 Cleaning Generated Files Map PDF Temporary Files and Smarty Cache for more details Note It can also be usefull sometimes in development mode If your are running PHP in a webserver as a module the compiled mo files are cached If no change happens after compiling new mo files it could be useful to restart the webserver 17 2 Character Set Encoding Configuration Character set configuration is needed when CartoWeb strings may include international characters with accents or other special characters Two types of encodings must be set how files ma
184. ions are e dontBlock Set to 1 to populate the black list without blocking the ip Useful for fine tuning the parameters before really blocking e whiteListPath White list location Read Section 16 2 3 Whitelist configuration to have more information on this option blackListPeriod How long does a blacklisted must remains blocked in seconds e blackListLog Location of the log file If the path is relative it is relative to CARTOWEB_HOME Note that www data user or the user who start apache have to be able the write into this file If this file is not writable the content will be written into CARTOWEB_HOME www data throttling throttling log e blackListMail A list of comma separated emails that will be notified every time an IP is added or removed from the blacklist buffer periodand buffer maxRequest Buffers configuration Read Section 16 2 2 Throttling rules configuration to see how buffers works 120 Throttling Configuration 16 2 2 Throttling rules configuration Access rules named buffer in the plugin represents the maximum request period you want to allow for each IP addresses You can configure one or more buffers in the client_conf throttling ini file Each buffer is defined by a name a period and a maximum of request For example if you want to allow a maximum of 20 request in 10 second for each IP you will write buffer short period 10 buffer short maxRequest 20 Wher
185. ipts php po2mo php Now you should have the file test_project projectmap mo in directory lt cartoweb_home gt locale fr LC_MESSAGES The directory fr LC_MESSAGES will be created if it does not exist 17 1 6 Debuging translation problems There can be several reasons why the translation is not working First you need to check if gettext is correctly installed and configured For so run the following scripts cd lt cartoweb_home gt scripts testgettext sh This will test if Gettext is correctly installed in your system 126 Internationalization Note Unix like system only this script is not intended for Windows users cd lt cartoweb_home gt scripts php testgettext php This will test if Gettext works correctly with php Once you have verified Gettext is installed and run correctly check if there are no errors in your po files e Verify you do no have duplicate msgid in your po files Each msgid must be unique in a po file A typical error message would be Error message Failure while launching msgcat to code iso 8859 1 use first output www cartoweb www cartoweb3 projects demo po demo en po www cartoweb3 projects demo po client en po output is www cartoweb3 projects demo po client en po 392 duplicate message definition www cartoweb3 projects demo po client en po 390 this is the location of the first definition msgcat found 1 fatal error duplicate message definit
186. istent manner using the ISO 19115 information It should be possible to get this information from the tag ScopeCd of the DataQuality section But this is not a searchable criteria in version 2 0 2 On tip is to create on the GeoNetwork node a category set to services and then used this categrory to get the list of server to propose to the end user 165 Routing luge 27 Routing rplugin 27 1 Introduction The routing plugins deals with the pgRouting http pgrouting postlbs org Postgresql extension allowing to perform among several algorithms computation of the shortest path between two nodes of a graph This plugin provides a graphical user interface to query a Postgresql PostGiS database with pgRouting functions installed on it Extended documentation on pgRouting functions can be found at the pgRouting website http pgrouting postlbs org The demo_plugins demonstration shows an example of the routing plugin This documentation details how to install pgRouting on a PostGIS enabled database and how to load demo data to be used in the demo_plugins project 27 2 Installation Before installing the pgRouting extension a sample PostGIS database have to be created as explained in the installation manual Chapter 1 Installation 27 2 1 Quick Install Install the PgRouting PostgreSQL module Note To do so o Download pgRouting from http pgrouting postlbs org and follow install instruction Mac users
187. ities Px Ay USSANE Query Results Towns id Name 1045 AIGLE 996 BULLE Download CS 2 6 Annotation and Redlining It is possible to freely draw points lines rectangles and polygons on the map ant to attach labels to them These features are persistent they survive panning or zooming A mask mode in which everything but the outlined polygon is masked is provided too Cartographic Functionalities ANAS WS f WAER Yi AVL ELMS Dif Ne oy VI RS S A J N a Myo PX Y 4 j A 4 5 iSi Ss We A Me my A ES OES AARS A a p 2 7 Measuring Tools Distances and surfaces can be measured on the main map with the following tools 2 8 Internationalization Translation handling in CartoWeb now uses gettext http www gnu org software gettext manual However internationalization architecture is ready for other About Outline Apropos Dessin translation systems Ta make life easier for translators scripts that gather the strings to be translated in the templates and in the configuration files are available 2 9 Access Rights Cartographic Functionalities Access to different elements of CartoWeb can be allowed or denied according to who is currently using the application Both functionalities and data may have access restrictions For instance PDF printing may be totally unavailable for anonymous access limited low resolution for normal user and totally gr
188. l create a temporary table fill it with the town information and then update the vertices table The towns contained in the shapefile may not be on the exact same point that the intersections of the roads Thus all intersections which are in a distance less that 2000 meters are associated to the town label This distance may be adjusted according to the dataset you are using CREATE TABLE roads_source_town AS SELECT DISTINCT t txt source_id distance PointN r the_geom 1 t the_geom AS d FROM roads_europe r town t roads_europe_vertices WHERE t txt UNK AND distance PointN r the_geom 1 t the_geom lt 2000 AND geom_id source_id ORDER BY t txt d CREATE TABLE roads_source_town_uniq AS SELECT FROM roads_source_town a WHERE a txt IN SELECT b txt FROM roads_source_town b where a txt b txt LIMIT 1 AND a d IN SELECT b d FROM roads_source_town b WHERE a txt b txt LIMIT 1 ALTER TABLE roads_europe_vertices ADD COLUMN txt character varying 50 SELECT AddGeometryColumn roads_europe_vertices the_geom 1 POINT 2 S UPDATE roads_europe_vertices SET txt SELECT DISTINCT txt FROM roads_source_town_uniq WHERE roads_europe_vertices geom_id roads_source_town_uniq source_id clean the temporary tables DROP TABLE roads_source_town DROP TABLE roads_source_town_uniq 169 Routing role The last step is to fill the geometry column of the vertices table CREATE TABLE roads_europe_vertices
189. lable with option viewStorage db 13 3 Views Usage 13 3 1 Loading Views Any defined view may be loaded by any users Loading a view may be achieved selecting it among a dropdown views list Two dropdown lists are available e a public one that only displays views labels that have been marked as visible by their creators e a selector within the Views plugin edition interface This view selector contains all views including the ones that have not been marked as visible by their creators Note that this selector provides a view ID integer input as well Views may also be loaded using GET parameters in URLs that look like http lt cartoweb client base url gt handleView 1 amp viewLoad 1 viewLoadid lt viewId gt or simply http lt cartoweb client base url gt view lt viewId gt Tip 109 Views pltigin Views not marked as visible may anyway be loaded by anyone Visible only means that their labels appear in the public view dropdown selector whereas invisible ones don t 13 3 2 Editing Views Views edition is restricted to users whom roles match at least one of those specified in the client_conf client ini viewAuth parameter see Section 13 2 2 Main Views Controller Views editors can create update or delete views 13 3 2 1 Saving a View To save the current map state as a view simply fill in the form fields with matching metadata To make the view visible check the S
190. lass LocationV2ToV3 extends ViewUpgrader protected function callFilters Sthis gt rename test foo Sthis gt add bar new test Sthis gt add someProperty 2 skthis zadd t caranba y Oret this gt remove someProperty Warning It is the responsibility of each developer to provide adapted filters when he she updates plugin session containers Warning Upgrade filters do not support non object typed plugin session containers 11 2 3 Upgrade Configuration See Section 13 2 2 Main Views Controller Only two of these parameters are related to views upgrading viewLogErrors enables to log outdated views loadings whereas viewUpgradeOut dated is useful to activate or not the upgrading device if 274 Upgrading Views Data deactivated outdated views parts are discarded 11 3 Customizing Views Processing Using Project Hooks CartoWeb offers the ability to add some project specific controls hooks within the views processing For now only one hook is available right before the data of the loaded view is merged with the current session data See method ViewManager handleView in client Views php To create hooks write a PHP class extending the basic viewHooks class defined in client Views php The extended class must be saved in a file with the same name located in your project plugins views client directory If the latter directory does not exist simply create it
191. lation 1 Installation 1 1 CartoWeb Installation 1 1 1 Prerequisite for Installing CartoWeb CartoWeb depends on several software components for its proper working Some are required and others are optional depending on what you intend to do Note Windows users can ignore this chapter and go directly to Section 1 1 2 CartoWeb Download The required software are A Web Server Such as Apache http httpd apache org PHP gt 5 0 3 See http www php net for more informations You will need to have some features available in PHP e Gettext optional You need the Gettext module if you want to enable the Internationalization in CartoWeb See Chapter 17 Internationalization for configuration Note If you are using the demo you need to have Gettext support installed as it uses Gettext by default If you are using Cygwin simply install the gettext devel package e SOAP optional if using direct mode only You need the SOAP module if you want to use CartoWeb as a Webservice or with separated CartoClient and CartoServer This is related to the cartoserverDirectAccess parameter described in Section 4 2 client ini 16 Installation Note If you are using Windows simply use the Windows Installer Section 1 1 2 CartoWeb Download If you absolutely want to install PHP manually see Appendix B Apache amp Mapserver Windows Manual Installation MapServer PHP MapScrip
192. le type types ShapeStyle gt lt element name labelStyle type types LabelStyle gt lt element name Shape type types Shape gt lt element name label type xsd string gt lt all gt lt complexType gt 206 Calling Plugins e shapeStyle style of shape e labelStyle style of label e shape shape can be a point rectangle line or polygon see Section 1 1 2 Shapes for a description of type Shape e label content of label lt complexType name ArrayOfStyledShape gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types StyledShape gt lt restriction gt lt complexContent gt lt complexType gt e array list of shapes with style lt complexType name OutlineRequest gt lt a LL lt element name className type xsd string gt lt element name shapes type types ArrayOfStyledShape gt lt element name maskMode type xsd boolean gt lt all gt lt complexType gt e className OutlineRequest or extended class name if project implements an extension e shapes list of styled shapes e maskMode if true will draw the complement of all shapes merged together 1 3 7 2 Outline Result lt complexType name OutlineResult gt lt all gt lt element name className type xsd string gt lt element name area type xsd double gt Ke G IL IL lt complexType gt e className OutlineR
193. le above which DHTML measures use km below they use m e panRatio ratio for panning by clicking directional arrows Default is 1 no overlap no gap Values below 1 result in an overlap of the old and the new maps values above in a gap between these two maps e weightZoomin integer defining display order of the zoomin tool icon in toolbar if not specified default to 10 A negative weight disables the tool Note 60 Navigation coreplugin location Zoomin is the default tool and it will be activated automaticaly If you want to deactivate it you need to set another default tool See initialTool in Section 4 2 client ini weightZoomout see weightZoomin default to 11 weightPan see weightZoomin default to 12 weightFullextent see weightZoomin default to 14 crosshairSymbol integer numerical id of symbol to use to materialize recentering point see your symbolset file crosshairSymbolSize integer defining the size used to display the recentering crosshair symbol crosshairSymbolColor RGB code comma separated list of integers of the crosshair color showRefMarks if true will add reference marks to the main map Reference marks configuration is set on server 7 2 Server side Configuration Here are the options that can be set minScale if set minimal scale allowed maxScale if set maximal scale allowed scaleModeDiscrete boolean if true only specified scales see below
194. le client_myproject php in the root htdocs directory This file only sets the environment variable and then calls the normal client php Each project has so its own URL lt php S_ENV CW3_PROJECT myproject require_once client php gt 34 Configuration Files 4 Configuration Files When installing CartoWeb the administrator of the application may want to adapt it to the environnement use This can be easily done using configuration parameters Some are required and CartoWeb won t correctly work if they re not set Others are optional but could hardly change the application behavior You will also find specific config parameters in the plugins related chapters of this documentation 4 1 Common client ini and server ini Options Common options for both client and server These parameters are available in client_conf client ini for client and server _conf server ini for server e profile developmentlproductionlcustom current settings profile The development profile has no cache activated and makes SOAP work in WSDL mode The production profile has all caches activated for best performances Setting this parameter to development or production will override some parameters in the configuration The custom profile means the parameters about caching and other are not overrided e useWsdl truelfalse if true WSDL will be used for sending SOAP requests This will add some processing time but ensures that SOAP
195. le is a set of functions that compute a shortest path from a set of edges and vertices Some functions are provided for importing data from geometric tables and for generating results as geometries Note For more information on these functions you can have a look at the pgRouting documentation http pgrouting postlbs org wiki pgRoutingDocs This section explains the main steps to integrate the routing fonctionnalities in a custom application We describe the steps followed to install the routing demo To make short we used an Europe roads shapefile imported it in PostGIS generated the graph tables and configured files to suggest a search of the shortest path between two European towns Note The following chapters describe steps necessary to build a graph structure from shapefiles It is not necessary to execute these commands if the demo_routing sq file lt CARTOWEB_HOME gt projects demoPlugins server_conf sql was loaded into the demo_plugins database This file already installs all the routing structure 167 Routing luge 27 2 2 1 Europe Roads Geodata Importation in PostGIS shp2pgsql I roadl shp roads_europe gt tmp roadl sql psql d demo_plugins f tmp roadl sql Only lauch the following commmands if you did not import the town table already shp2pgsql I mispopp shp town gt tmp town sql nnt un DH psql d demo_plugins f tmp town sql 27 2 2 2 Graph Importation The first step is to ad
196. leId columnIds Column selector rules allow to keep only a subset of columns from the source table Parameter columnIds should contain an array of column IDs determining which columns to keep 2 4 3 2 2 Column Unselector public function addColumnUnselector SgroupiId StableId columnIds Column unselector rules allow to keep only a subset of columns from the source table by removing a list of columns Parameter columnIds should contain an array of column IDs determining which columns to remove 2 4 3 2 3 Group Filter public function addGroupFilter S groupId callback Group filter rules allow to modify group title Parameter ca1iback should contain a pointer to a callback method with the following signature static function myCallbackMethod group_id group_title return group_new_title 2 4 3 2 4 Table Filter public function addTableFilter S groupId S tableId callback 234 New Plugins Table filter rules allow to modify table title Parameter caliback should contain a pointer to a callback method with the following signature static function myCallbackMethod table_id table_title return table_new_title 2 4 3 2 5 Column Filter public function addColumnFilter groupId tableId ScolumniId callback Column filter rules allow to modify column title Parameter caliback should contain a pointer to a callback method with the following signature static function myCallbackMethod table_i
197. legend block type indicates what kind of processing must be applied e content string optional for text blocks the textual content for image blocks the image filename for table blocks a comma separated list of textual content limited to one row commas delimit cells e fontFamily string name of font family to use Naming depends on used 91 PDF Export plugin pdfEngine font Size float font size in points pt font Italic boolean if true text will be emphasized fontBold boolean if true text will be bold weighted font Underline boolean if true text will be underlined color string color of text in hexadecimal code rrggbb A few color aliases white black are available as well backgroundColor string background color in hexadecimal code or color aliases borderwWidth float border line width in distUnit borderColor string border line color in hexadecimal code or color aliases borderStyle solididashedldotted border line style Only available with PdfLibLite pdfEngine solid value is used for other pdfEngines padding float vertical and horizontal distance between block content and its borders in distUnit horizontalMargin float horizontal margin in distUnit around the block outside borders verticalMargin float vertical margin in distUnit around the block outside borders horizontalBasis leftlright indicates what document side must be used fo
198. lement name Switches type types ArrayOfSwitchInit minOccurs 0 gt lt all gt lt complexType gt e notAvailablelcon filename of icon for not available layer current scale is above or below this layer maximum minimum scale e notAvailablePlusIcon filename of icon for not available layer current scale is above this layer maximum scale e notAvailableMinusIcon filename of icon for not available layer current scale is below this layer minimum scale e layers list of layers e switches list of switches 1 2 3 Location This includes configuration specific to Location plugin ie fixed scales scales limits and shortcuts lt complexType name LocationScale gt lt all gt lt element name label type xsd string gt lt element name value type xsd double gt lt all gt lt complexType gt e label scale caption e value scale value to be set when scale is selected lt complexType name ArrayOfLocationScale gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types LocationScale gt lt restriction gt lt complexContent gt lt complexType gt e array list of scales lt complexType name LocationShortcut gt lt all gt lt element name label type xsd string gt lt element name bbox type types Bbox gt lt all gt lt complexType gt 193 Calling Plugins e label shortcut caption e b
199. les it means there are the following packages Client Server Common CorePlugins Plugins Scripts Tests e author lt author gt file author with email address e version Id file always Id content automatically set by CVS e param lt type gt lt description gt method type mandatory description if needed e return lt type gt lt description gt method type mandatory description if needed e var lt type gt lt description gt variable type mandatory description if needed e link lt class gt l lt method gt anywhere to add a hyperlink to a class or method e see lt class gt l lt method gt anywhere to add a reference to a class or method see is also used for interface implementation Because PhpDocumentor doesn t inherit tags param return etc and because we don t want to copy paste these tags we add a simple see tag to interface method definition See example below 8 2 3 Example Here is a code example Please note e simpleVariable doesn t need a description but var tag is mandatory e here constructor doesn t need a description e getters and setters are too simple to have a description but don t forget the param and return e use but not abuse of link and see This can be really useful to navigate through documentation lt php eRe Sica Tids The purpose of this file is to show an example of PhpDocumentor DocBlocks in
200. lfalse if true this layer and its children as well is listed in tree but without checkbox Its selection status defined by selected property thus cannot be changed Example of Initial MapState mapInfo initialMapStates default layers polygon selected true mapInfo initialMapStates default layers point hidden true mapInfo initialMapStates map25 layers polygon selected true mapInfo initialMapStates map25 layers polygon unfolded true 39 Configuration Files 4 4 Ini Files for Plugins Each plugin may have a configuration file associated with it It may be found in client_conf or server_conf your_project_name directory depending which side needs to access the parameters They have the same name as the plugin and ends with ini extension For instance the layers plugin has a configuration file named layers ini All plugins configuration files are described in the next sections of this chapter Every plugin that provides tools icons can be configured for 4 4 1 Ordering Tools Icons To modify the toolbar icons sequence update the tools weight values Icons with the lowest weights are placed first in the toolbar Parameters naming convention is to concatenate the weight prefix to the capitalized first lettered tool name as in weightDistance For two word tool names eg exemple_tool each word has its first letter capitalized and the _ underscore is removed For instance exempleTool something Default weig
201. ll be added automatically to the cells contents The height parameter gives the height of a single lined row and not the total table height Note that if a table is too high to fit a page page breaks will automatically be added Caption and headers are described using separated blocks They are specified by filling the table block caption and headers fields with the matching blocks ids Since they are not standalone there is no need to activate the blocks in the general activatedBlocks list That way it is possible to set the caption and headers layouts separately from the general table one which is their default layout Note that these subblocks are optional and will not be displayed if no content can be determined for them The same headers and caption subblocks can be shared amongst several table blocks CartoWeb output table content and its caption and headers subblocks is automatically determined But it is also possible to user define independent tables by filling the table and its caption headers content cells content are represented as comma separated string lists only one row available for table data For instance 103 PDF Export plugin blocks queryResult type table blocks queryResult inNewPage true blocks queryResult caption tableCaption blocks queryResult headers tableHeaders blocks queryResult height 10 blocks queryResult verticalMargin 10 blocks queryResult hCentered true blocks tableCapti
202. locks maps scalebar the image file location must be specified in content using either an absolute URL or an absolute path within the server file system It is also possible to use a relative file path based on the CartoClient root directory eg ht docs gfx layout c2c png width and height have to be set by the user For instance blocks logo type image 102 PDF Export Gilgit blocks logo content http server gfx layout c2c png blocks logo width 40 blocks logo height 7 blocks logo padding 2 blocks logo parent mainmap blocks logo horizontalBasis right blocks logo inFlow false blocks logo horizontalMargin 5 blocks logo verticalMargin 5 Tip If you want to switch the image file depending on the used language set the block i18n parameter to true and add languages matching URLs filepathes to your PO files 12 3 4 5 Table Blocks Tables blocks are used to represent tabular data such as query results A table is composed of a caption row title a headers row columns fields titles and one or more data rows All cells can only contain textual content The table block describes how data cells will be rendered font text color background color using the same parameters than for text blocks The table width will be computed according to the cells content with a upper limit materialized by the page or the parent block available extent If the max extent is reached line feeds wi
203. lt enumeration value HORIZONTAL_PAN_WEST gt lt enumeration value HORIZONTAL_PAN_NONE gt lt enumeration value HORIZONTAL_PAN_EAST gt lt restriction gt lt simpleType gt e VERTICAL_PAN_NORTH panning north e VERTICAL_PAN_NONE no vertical panning e VERTICAL_PAN_SOUTH panning south e HORIZONTAL_PAN_WEST panning west e HORIZONTAL_PAN_NONE no horizontal panning e HORIZONTAL_PAN_EAST panning east 200 Calling Plugins lt complexType name PanDirection gt lt all gt lt element name verticalPan type types PanDirectionType gt lt element name horizontalPan type types PanDirectionType gt fe ES lt complexType gt e verticalPan type of vertical panning e horizontalPan type of horizontal panning lt complexType name PanLocationRequest gt lt all gt lt element name bbox type types Bbox gt lt element name panDirection type types PanDirection gt lt all gt lt complexType gt e bbox current bounding box see Section 1 1 2 Shapes for a description of type Bbox e panDirection panning directions 1 3 5 1 3 Zoom Point Request lt simpleType name ZoomType gt lt restriction base xsd string gt lt enumeration value ZOOM_DIRECTION_IN gt lt enumeration value ZOOM_DIRECTION_NONE gt lt enumeration value ZOOM_DIRECTION_OUT gt lt enumeration value ZOOM_FACTOR gt lt enumeration value ZOOM_SCALE gt lt restriction gt lt sim
204. lt printing scale Must be one of the above list items Used only when guiMode is rotate general defaultOrientation portraitllandscape sheet orientation The same orientation is used for every pages of the PDF document general activatedBlocks comma separated list of strings names of blocks that will be used in the document Names must match block objects names See Blocks configuration section general overviewScaleFactor float sets the extension of the overview map The bigger this parameter the wider the extension Default 10 general overviewColor string sets the inner color of the current map outline in the overview Default none general overviewOutlineColor string sets the border color of the current map outline in the overview Default red general showRefMarks boolean if true reference marks are added to the exported main map They are never displayed on the overview general pdfEngine CwFpdflPdfLibLite name of the PDF engine to use For now only FPDF is available and must be called using CwFpdf pdfEngine value A PDFLib Lite version is very partially implemented and as a result should not be used for now pdfEngine value PdfLibLite general pdfVersion string PDF version that must be used only available with PdfLibLite pdfEngine general output inlinelattachmentllinklredirection indicates how generated PDF file must be output default redirection inline file is g
205. ltextColumns parameter of the configuration file must have a corresponding input in the template Each input should have an id composed of the name of the column prefixed with the key word search_ For example the the column adr_num should give lt input type text id search_adr_num name search_adr_num size 13 gt The template contains a submit button that calls the CartoWeb trigger Search Dolt JavaScript method This method defined in the Search ajax 4s see below launches the action You may notice the hidden inputs in the template They provide parameters that can be dynamically changed by JavaScript e The search_config input determines the table to be queried Its value should correspond to the name of a table defines in the search ini config here_is_the_value This value allows to set different table in the configuration file and to dynamically choose which table should be queried This input is not optional and the search plugin will generate an error e The search_sort_column input defines the column to be used by the sort clause If this input is not set or has no value it s overridden by the sortColumn parameter defined in search ini If this parameter is also not set in the configuration file it will be ignored e The search_sort_direction input defines the sort order It should be asc or desc If this input is not set or has no value it s overridden by the sortColumnDirection parameter defined in s
206. ly enable your plugin SpluginEnabler gt enablePlugin yourplugin otherwise your plugin will not send back anything disableCoreplugins explicitly deactivate all coreplugin It means nothing will be sent back to the browser You can activate plugin case by case for example SpluginEnabler gt disableCoreplugins j SpluginEnabler gt enablePlugin images will only enable the images coreplugin and the map will then be refreshed 21 2 4 Javascript browser s side Create a new javascript file named yourPlugin ajax js Place it in plugins yourPlugin htdocs js Add it to your cartoclient tpl header lt script type text javascript src r type js plugin yourPlugin YourPlugin ajax js r gt lt script gt be careful to not place it before include file cartoclient_ajaxHeader tpl you will get a javscript error because the plugin s javascript code use some objects which are defined only in files inluded via the cartoclient_ajaxHeader tp file The YourPlugin ajax js contains basicaly two parts one to trigger the action and another to handle the answer and update your html javascript 21 2 4 1 Ajax Answer Handling AjaxPlugins YourPlugin 138 AJAX handleResponse function pluginOutput Plugin general behaviour if pluginOutput variables variable_name do something with your variable alert pluginOutput variables another_variable_name AjaxHandler updateDomElement target_id
207. m queries based on a set of selected id s see Section 9 2 2 MapServer Query Configuration o query Perform queries on layers see Chapter 9 Queries ET T o statictools Distance and surface calculation o tables Table rules management see Section 9 1 2 Tables Configuration e documentation documentation o apidoc PHP source code documentation o user_manual source DocBook XML source of the present documentation e htdocs Web accessible directory o css css files o gfx icons files o js javascript files e include libraries used by CartoWeb e locale locale files for internationalization purposes see Chapter 17 Internationalization e log logs mainly used for development and debug purposes e plugins Standard but not mandatory plugins see Section 2 3 Plugins 29 Structure o auth authentication plugin see Chapter 15 Security Configuration o exportCsv Csv export plugin see Section 11 3 CSV Export o exportHtml HTML export plugin see Section 11 2 HTML Export o exportPdf PDF export plugin see Chapter 12 PDF Export plugin o hello test plugin o hilight hilight plugin see Section 9 3 3 Hilight Configuration o outline redlining and annotations see Chapter 10 Annotation and Redlining plugin outline po PO templates files used for gettext translation system see Section 17 1 2 PO Templates projects CartoWeb user projects dir see Section 2 4
208. main page 79 Annotation and Redlining rain Gii The Setup function can be used to do all the actions you want The Return function is used to return a value to the main page The Display function is used to display something in the main page It receives the id of the target element to use something_d Add the following four function definitions functionList yourToolInit yourToolInit functionList yourToolSetup yourToolSetup functionList yourToolReturn yourToolReturn functionList yourToolDisplay yourToolDisplay These are needed because of the dynamic function call inside the framework which do not use the eval function to increase performances The width of the tool area available on screen is 245 pixel Height is variable 80 Export Plugins plugin exportCsv exportHtml exportDxf exportRtf exportImg 11 Export Plugins plugin exportCsv exportHtml exportDxf exportRtf exportimg 11 1 Introduction It is possible to export maps and data from the viewer ie the CartoWeb user interface in order to print them or to save them on the user s computer Six formats are available PDF CSV HTML DXF RTF and raw image The PDF export plugin is precisely described usage configuration in next chapter Chapter 12 PDF Export a plugin 11 2 HTML Export The exportHtm1 plugin outputs an HTML simplified version of the viewer main map keymap and layers list It is often launched
209. maps based on the center of the viewed maps 177 CartoWeb and WMS Usage Statistics faluiciil Stats Reporte If the type is gridbox or gridcenter you have to add a few fields in the configuration that will define the position size and granularity of the grid box For example type gridbbox minx 522000 miny 187000 size 500 nx 106 ny 76 30 1 3 2 Periods The possible period units are hour e day week e month e year The value specifies the number of those units to keep in the DB Here is an example for generating a report aggregated by week for the last 12 weeks periods week 12 The report generator consider the current time as being the time of the last hit matching the filters A period is taken into account even if there is no record for this period 30 1 3 3 Values A list separated by of any of the following e count the number of hits no PDF or DXF outputs e countPDF the number of PDF generated e countDxF the number of DXF generated e pixel the sum of pixels generated 30 1 3 4 Dimensions A list separted by of any of the following 178 CartoWeb and WMS Usage Statistics plugin statsReports e project user scale e size e theme e layer e pdfFormat e pdfRes If you use the scale dimension you have to add a field to specifiy the limits for the discretization of the scale value For example dimensions scale scales 1000 5
210. me gt maxResolution integer optional maximum allowed resolution for the given format If selected resolution is above maxResolution it will be set to maxResolution value e formats lt format_name gt allowedRoles comma separated list of strings list of roles allowed to use the format PHP built in default values all format parameters have NULL default values except allowedRoles all 12 2 3 Blocks Configuration All blocks parameters are optional since default values are hard coded in the PDF export plugin PHP code see code documentation for PdfBlock class Those default properties can be partially or totally overriden using a template object whose syntax is similar to this template type text template fontFamily times template fontSize 12 template fontItalic false whereas real blocks are described this way blocks title weight 10 blocks title verticalBasis top blocks title verticalMargin 15 Template described properties have a global scope whereas blocks ones are specific to the given block Properties names are identical for both template and blocks objects Properties not related with the given block type are generally ignored for instance fontSize is not taken into account if block is an image A lots of properties use CSS like denominations and effects All following parameters names must be precede by either template or blocks lt block_name gt prefixes e type textlimageltablel
211. me your plugin Any plugin name is OK as long as it is not already used but it is recommended to use a lt projectName gt lt initialPluginName gt separating words with caps Extended coreplugins directories and files must be saved in projects lt projectName gt coreplugins lt extendedPluginName gt whereas extended simple plugins ones will be located in projects lt projectName gt plugins lt extendedPluginName gt When writing your extended class the first thing to do is to specify what plugin is replaced by the new one This is done by overloading the replacePlugin method It should return the replaced plugin name For instance to extend the layers coreplugin CartoClient part in your myProject project create a ClientMyProjectLayers php as follows lt php package CorePlugins version Id ClientMyProjectLayers php v 1 8 2005 02 23 11 52 43 johndoe Exp yf class ClientMyProjectLayers extends ClientLayers public function replacePlugin return layers Add or overload methods here gS To be activated extended plugins AND coreplugins must be explicitely be declared in the loadPlugins parameter of your project general configuration files 224 New Plugins loadPlugins exportPdf auth myProjectLayers With no surprise extended classes can take advantage of the tools provided by the interfaces their parent classes implement By implementing additional interfaces
212. merged cd lt cartoweb_home gt scripts php cwprof php local lt trace_directory gt Script output will look like this times in milliseconds Exec client 451 Exec server total 707 Exec MS obj 472 Exec MS other 85 Exec total 1524 e Exec client time elapsed on client Will be empty if script is executed on a server only trace file e Exec server total time elapsed on server It includes Exec MS obj and Exec MS other times Will be empty if script is executed on a client only trace file or if 271 Performance Tests direct mode is on e Exec MS obj time elapsed while creating Mapserver main object It includes reading the mapfile Will be empty is script is executed on a client only trace file e Exec MS other time elapsed in other Mapserver tasks Will be empty is script is executed on a client only trace file e Exec total time elapsed in total If direct mode is off it also includes time elapsed in SOAP data transmission 10 2 3 Graphical Interface Unix like To have more information about execution times and calls stack you can use a powerful graphical viewer called KCachegrind This tool is available on Unix like environments only On Win32 it can be used via KDE on CygWin KCachegrind is included in KDE package kdesdk To install it on a Debian distribution type apt get install kcachegrind APD package includes a script called pprof2calltree that can translate a trace generated b
213. meter fontFamily font Size expressed in points color Small exception fontItalic fontBold fontUnderline are booleans Box properties background color border size color and style padding are set in the same way whatever the block type is Width is generally detected automatically according to the text length On the other hand the system has poor means to evaluate its height so it is recommended to set it by hand Note that padding space between border and content is taken into account only in the horizontal direction for text blocks To remove a block border one can simply set its width borderwidth to 0 Note that some border styling parameters are not available with all pdfEngines For instance blocks title zIndex 2 blocks title weight 10 blocks title verticalBasis top blocks title verticalMargin 15 blocks title hCentered true blocks title fontSize 20 blocks title fontItalic true blocks title fontBold true blocks title fontUnderline true blocks title backgroundColor eeeeee blocks title height 15 100 PDF Export piigi It is possible to specify a text content in the configuration file by using the content parameter Note that n strings in the content value will result in line feeds in the final block blocks myText content This is myText block content blocks myText2 content myText2 block nis multilined Text blocks content may also be retrieved from external da
214. meter The following parameters defined choropleth generation e msLayer name of the layer in the mapfile e label Label for the layer in the interface e choropleth Should choropleth be activated This is present for future development e choropleth_attribs Comma separated list of attributes that may be used for choropleth e choropleth_attribs_label Comma separated list of labels to display as description of the preceding attributes 22 4 Client side Configuration Client side configuration allow to specify which algorithms should be display within the user interface Currently there are 2 algoriths families that may be configured The first is about classification algorithms The second is about generation of color ramp The signification of the parameter is pretty straightforward The choroplethDat aFromCurrent BoundingBox parameter allows to choose whether classes should change when users zoom or if they should remain constant for every scales The following classification method are currently supported F Custom lt 0 R Equal intervals 1 j MAES amp 2 n Modes 3 choroplethClassifMethodDefault 2 choroplethClassifMethodsList 0 2 3 The following color ramp generation method are currently supported Custom RGB interpolation 1 HSV interpolation lt 2 5 Max diffrence 3 choroplethColorRampMethodDefault 1 choroplethColorRampMethodList 1 3 choroplethDataFromCurrentBoundingBox false 144
215. module to use SetEnv command To load this module add the following line to your Apache configuration LoadModule env_module usr lib apache 1 3 mod_env so 3 2 2 Using current_project txt Add a file named current_project txt in CartoWeb root directory This file must contain a single line with project name 3 2 3 Using a GET Parameter You can pass a GET parameter project YOUR_PROJECT to the client php script for instance 33 Projects Handling http path to cartoweb client php project myProject 3 2 4 Using the Projects Drop down List Have a look at the configuration of client ini described in Section 4 2 client ini in particular directives showProjectChooser and availableProjects to display the project selection drop down menu If showProjectChooser is true a dropdown menu will appear in your CartoClient interface giving the list of all projects available in your projects directory Selecting one will make it the active one Your choice is propagated from page to page Note that if the selected project has showProject Chooser set to false the project selection dropdown will no more appear keeping you from activating another project To go back to the initial project call the initial client php page without posting the HTML form 3 2 5 Using a Modified client php This should be avoided in production but may be useful in development if you have to frequently switch the working project add a new fi
216. most client plugins also have a corresponding server plugin that must be loaded on the server side See Section 4 3 3 2 lt myMap gt ini Internationalization e I18nClass is now deprecated See Chapter 17 Internationalization for a description of the internationalization options and the corresponding configurations e defaultLang string default language possible values are the usual ISO locale codes en fr de e langList list list of usable languages Used to order and restrict the available languages In case you have many languages in directory lt cartoweb_home gt locale and do not want to use them all in your project you may use this parameter to specify a list of languages to use The order in which you input the languages codes will be used to display the languages links in the interface Example 4 1 langList usage langList it de fr The exemple above restricts the availablelanguages to it de and fr They will be displayed in that order in the interface languages list ToolPicker 37 Configuration Files e toolPickerOn truelfalse enable the ToolPicker dhtml See Section 10 5 The ToolPicker Interface GUI e initialFolder folder Set the default folder menu tab to by active by default folder is the id of the element in the template containing the corresponding plugin s specific interface For example initialFolder folder2 By default folder1 is active 4
217. n base enc11 Array gt lt attribute ref encll arrayType wsdl arrayType ChildrenSwitch gt lt restriction gt lt complexContent gt lt complexType gt e array list of children switches lt complexType name Layer gt sall lt element name className type xsd string gt lt element name id type xsd string gt lt element name label type xsd string gt lt element name children type types ArrayOfChildrenSwitch minOccurs 0 gt lt element name minScale type xsd double gt lt element name maxScale type xsd double gt lt element name icon type xsd string gt lt element name link type xsd string gt lt element name aggregate type xsd boolean minOccurs 0 gt lt element name rendering type xsd string minOccurs 0 gt lt element name metadata type types ArrayOfString minOccurs 0 gt lt all gt lt complexType gt e className layer class name LayerGroup Layer or LayerClass e id layer ID e label label to be displayed This label is not yet translated using internationalization e children list of children Calling Plugins e minScale minimum scale at which layer will be displayed e maxScale maximum scale at which layer will be displayed e icon filename of the static icon for the layer Dynamic legends are described in Section 6 4 Layers Legends e link if set layer name is clickable e msLayer MapServer layer id
218. n methods such as recentering on a specific object or moves relative to previous position It returns the new bounding box and scale 1 3 5 1 Location Request lt simpleType name LocationType gt lt restriction base xsd string gt lt enumeration value bboxLocationRequest gt lt enumeration value panLocationRequest gt lt enumeration value zoomPointLocationRequest gt lt enumeration value recenterLocationRequest gt lt restriction gt lt simpleType gt e bboxLocationRequest recenters on a bounding box e panLocationRequest moves horizontaly verticaly panning e zoomPointLocationRequest recenters on a point includes relative zoom and fixed scale e recenterLocationRequest recenters on mapfile IDs lt complexType name LocationConstraint gt as U ea lt element name maxBbox type types Bbox gt lt all gt lt complexType gt e maxBbox maximum bounding box If given parameters lead to a larger bounding box it will be cropped see Section 1 1 2 Shapes for a description of type Bbox lt complexType name LocationRequest gt lt all gt lt element name className type xsd string gt lt element name locationType type types LocationType gt lt element name bboxLocationRequest type types BboxLocationRequest minOccurs 0 gt lt element name panLocationRequest type types PanLocationRequest minOccurs 0 gt lt element name zoomPointLocationRequest type typ
219. n to the core plugins Note that most server plugins also have a corresponding client plugin that must be loaded on the client side See Section 4 2 client ini e mapInfo initialMapStates See Section 4 3 3 3 Initial Mapstates 4 3 3 3 Initial Mapstates Initial map states set the initial aspects of the layers selection interface when starting using CartoClient un folded nodes selected layers Some of these properties are not modifiable in the layers selection interface hidden layers for instance and thus stay unchanged throughout the session Several initial map states can be created in myMap ini but at least one must be present Each one is identified by a unique initialMapStateld The choice to activate one or another is done client side in client_conf client ini Available properties and syntax for layers in initial map states are e mapInfo initialMapStates initialMapStateld layers layerld selected truelfalse if true layer is initially selected e mapInfo initialMapStates initialMapStateld layers layerld unfolded truelfalse if true the layerGroup is represented as an unfolded node children layers are visible e mapInfo initialMapStates initialMapStateld layers layerld hidden truelfalse if true this layer and its children are not shown in the layers list but are still displayed on the map if they re activated e mapInfo initialMapStates initialMapStateld layers layerld frozen true
220. nRequest gt bboxLocationRequest gt bbox gt maxy 150000 The query will be performed on a rectangle on all selected layers ie layers defined in layers request object IDs and attributes will be returned Srequest gt queryRequest gt className QueryRequest Srequest gt queryRequest gt shape gt className Bbox Srequest gt queryRequest gt shape gt minx 570000 Srequest gt queryRequest gt shape gt miny 120000 Srequest gt queryRequest gt shape gt maxx 580000 Srequest gt queryRequest gt shape gt maxy 130000 Srequest gt queryRequest gt queryAllLayers true Srequest gt queryRequest gt defaultMaskMode false Srequest gt queryRequest gt defaultTableFlags gt returnAttributes true Srequest gt queryRequest gt defaultTableFlags gt returnTable true Srequest gt queryRequest gt querySelections array Now request object is ready SOAP method is called try result Sclient gt getMap request print_r result b eateh Soaprault staulty 7 print Statlt sfaulestring 2 Result is shown below It includes relative paths to generated images and new scale computed from requested bounding box Query results include one table per layer No results were found in layer swiss_layer_1 and two results in swiss_layer_2 As requested attributes here attribute_3 and attribute_4 are returned for each row stdClass Object 214
221. nd several properties e title title of the criterion e type checkboxlradioldropdown rendering of the criterion input 57 Layers coreplugin e alloptionsListed boolean only relevant when type checkbox If this setting is true no filter is applied when all boxes are checked Default setting is false e options a list of object like options with an option name a label anda selected boolean status indicates the initial state of the filter form For instance i18n true criteria foo title foobar criteria foo type checkbox criteria foo allOptionsListed true criteria foo options bou label some text criteria foo options bou selected true criteria foo options bla label blabla criteria foo options bla selected true criteria foo options chon label some other option not checked If users check all the boxes of a criterion no filter will be applied for this criterion If no box is checked for a criterion all its filters will be applied For radio and dropdown criterion it is possible to specify a neutral option if selected no filter is applied for this criterion using the nuii keyword For instance eriperias tOC Li tle Teobax criteria foo type dropdown criteria foo options bou label some text criteria foo options chon label some other text criteria foo options null label no filter criteria foo options null selected true 6 8 3 Server Configuration The plugin server sid
222. nd server_conf mapiId mapId ini For instance loadPlugins mapOverlay ogcLayerLoader wmsBrowserLight 26 3 Define a list of WMS servers using the ini file To do so in client_conf wmsBrowserLight ini set the following parameters in the ini file of the plugin catalogtype ini servers 0 label Sandre Ouvrage servers 0 url http services sandre eaufrance fr geo ouvrage servers 1 label Donn es administratives et routi res en France Geosignal servers 1l url http www geosignal org cgi bin wmsmap 164 WMS Browser Light iplug Warning If your url contains aditional parameter map f00 you MUST enclose the url between doublequotes servers l url http www foo org cgi bin mapserv map bar 26 4 Connect to a GeoNetwork node having metadata on WMS services In order to use this type of connection the name of the GeoNetwork node has to be known Optionnaly the plugin will first logged into the node if user and password are specified To do so in client_conf wmsBrowserLight ini set the following parameters in the ini file of the plugin catalogtype gn gn http sandre eaufrance fr geonetwork unset gnuser and gnpassword if no login has to be made gnuser cartoweb gnpassword cartoweb gnlang en 7 gnQuery is how CartoWeb could get the list of services in the node gnQuery category Services For the time being there is no way to query GeoNetwork for services in a cons
223. ndering the LayerGroup is not displayed Its children are simply rendered as an HTML simple select options list If the selected child layer cannot be determined using posted or session saved data first child according to the layers layerld children list order is selected If any only the selected child layer s own children are displayed under the dropdown list e layers layerld metadata minScale resp maxScale one may specify a numerical minimal resp maximal scale for the given LayerGroup This parameter has 48 Layers coreplugin absolutely no effect on Mapserver behavior and is only used to display out of scale icons and links in the layers tree For more info about layers ini metadata parameters see Section 6 3 2 Metadata in layers ini 6 2 4 Children Switching Children switching is useful to define several lists of children for one layer group The children that will be displayed is choosen by a special parameter the switch ID Switch IDs and labels are listed in file layers ini server side In default test environment a dropdown is constructed using this list and displayed in the GUI switches switchl label Switch 1 switches switch2 label Switch 2 switches switch3 label Switch 3 Then each layer group that needs to change its children depending on the switch ID may add this ID as a suffix to the children option layers layerId className LayerGroup layers layerId children switchl layerl
224. ndling 31 Projects Handling 3 Projects Handling 3 1 Introduction Projects are used to customize a CartoWeb application to your needs By creating a new project you can override templates resources files pictures style sheets JavaScript files etc configuration files and even add new plugins or modify existing ones It is strongly recommended to use projects when deploying a CartoWeb application with non standard layout or plugins The main reason is the necessity to keep upstream files unchanged in order to easily apply the application upgrades Projects are in fact a mirrored collection of directories and files from the original architecture Files placed in a project are in most cases used preferentially to the original files There is an exception with plugins PHP classes the latter must be extended and not simply overridden In projects you can also add brand new files for instance new plugins that have no original version in the upstream structure Fore more details about how to write or customize plugins in projects see Chapter 2 New Plugins in Part III Developer Manual Note that you don t need to duplicate the whole CartoWeb structure in your projects Only directories that contain overriding files have to be created In ini files only variables set in projects are overridden Other variables keep the values set in upstream ini files Following files can be overridden e client_conf ini clien
225. ned default true e defaultTable if true the results table is displayed default true e weightQueryByPoint integer which defines display order of the query by point tool icon in toolbar default 40 Negative weighted tools are disabled e weightQueryByBbox see weightQueryByPoint default 41 e weightQueryByPolygon see weightQueryByPoint default 42 e weightQueryByCircle see weightQueryByPoint default 43 9 1 2 Tables Configuration Tables plugin can be used by any plugin to manage transfer and display tables structure In basic CartoWeb installation only Query plugin uses this functionality To configure table appearance use tables client side rules described in Developer s Documentation Section 2 4 3 Tables 9 2 Server side Configuration 9 2 1 query ini Here are the options that can be set in server s query ini e drawQueryUsingHilight if true query hilighting will use Hilight plugin In this case Hilight plugin must be loaded on server If false objects will be hilighed using MapServer query functionality See also Section 9 3 3 Hilight Configuration default false e noRowld if true row id will not be included in the table In this case the row id will not be displayed in the output table html pdf etc default false 9 2 2 MapServer Query Configuration MapQuery plugin can be used by any plugin to retrieve objects information from MapServer Following options can be set in
226. ni for backward compatibility e UTF8 is the default if nothing is set See Section 6 3 Metadata in Mapfile and layers ini for example of usage in mapfile and layers ini The EncoderClass defined in client ini would be for example EncoderClass data EncoderUTF EncoderClass value_iso EncoderISO This example would be in the case most of your layers are in utf8 and only some are in iso 129 Templating 18 Templating 18 1 Introduction Smarty Template Engine is a convenient way to write HTML templates for dynamic pages It enables to delocalize a great amount of layout processing Thus it is pretty easy to customize a CartoWeb application layout without affecting the application core CartoWeb templates are located in templates root directory and in plugins templates directories see Section 2 3 Plugins More info about Smarty templates can be found here http smarty php net A comprehensive online documentation including a reference and examples is available in various languages here http smarty php net docs php 18 2 Internationalization It is possible and recommended to use the SmartyGettext http smarty incutio com page SmartyGettext tool in order to translate template embedded textual strings Texts to be translated are identified using the t tag lt p gt t Default text please translate me t lt p gt lt p gt t name John Doe Hello my name is 1 t lt p gt l
227. ns 11 6 2 mode image CartoWeb allows to return a raw image map with no HTML It is not an export plugin and thus has not to be activated anywhere CartoWeb simply needs to receive a mode image REQUEST parameter GET or POST For instance http your cartoweb3 recenter_x 123456 amp recenter_y 654321 amp show_crosshair 1 amp mode image See Section 2 4 2 2 Available Parameters for more details about the possible extra parameters allowed by this feature 86 PDF Export fpitigiih 12 PDF Export plugi gin 12 1 Introduction This chapter describes how to configure PDF export using client_conf exportPdf ini parameters First part Section 12 2 Configuration Reference is a comprehensive reference of user available configuration parameters Second part Section 12 3 Tutorial is intended to be a small tutorial giving explanations and examples about how to configure the PDF exportation tool 12 2 Configuration Reference 12 2 1 General Configuration Parameters are named using a lt object gt lt property gt convention These parameters are grouped within dedicated objects that deal with separated aspects of the export For instance general horizontalMargin 10 general verticalMargin 10 formats A4 label A4 formats A4 bigDimension 297 Some objects handle the general description of the PDF document as well as user form generation general and formats Other objects are blocks
228. nt execution flow that processes each plugin s logic and renders a monolithic HTML page Non AJAX projects will run the synchronous mode without any alteration e The asynchronous mode is the execution flow specifically built to process AJAX calls In this mode a subset of the plugins features is processed and an XML 276 AJAX Implementation document containing plugins output is rendered to be processed by the Javascript part 12 2 2 Ajaxable Interface Client plugins can now implement an interface called Ajaxable that enables a plugin to handle an asynchronous request and render XML See CartoWeb 3 3 API documentation interface Ajaxable http www CartoWeb org doc cw3 3 apidoc Client Ajaxable html 12 2 3 Plugins Javascript Side Each Ajaxable plugin is made of a Javascript part that handles e HTTP POST GET parameters generation for AJAX requests e GUI refresh logic processing of the plugin XML response and DOM injection manipulation 12 2 4 Plugins Actions AJAX introduces the concept of actions An action is provided by a plugin and is used to define e From the Javascript side what are the HTTP parameters GET amp POST to be sent to the Cartoclient e From the Caroclient side what subset of each plugin s logic is to be processed In example the Location coreplugin provides the following actions e Location Pan e Location Zoom e Location FullExtent e Location Recenter 12 2 5 Plugins Enablem
229. ntent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType types IdSelection gt lt restriction gt lt complexContent gt lt complexType gt e array list of ID selections lt complexType name RecenterLocationRequest gt lt all gt lt element name idSelections type types ArrayOfIdSelection gt lt all gt lt complexType gt e idSelections list of ID selections 1 3 5 2 Location Result 202 Calling Plugins lt complexType name LocationResult gt lt all gt lt element name className type xsd string gt lt element name bbox type types Bbox gt lt element name scale type xsd double gt lt all gt lt complexType gt e className LocationResult or extended class name if project implements an extension e bbox new bounding box see Section 1 1 2 Shapes for a description of type Bbox e scale new scale 1 3 6 Query The Query plugin allows to search objects hilight them on map and return text results Search can be executed from a rectangle selection and or using a list of object IDs Query request object is not mandatory For more information about Query plugin see Chapter 9 Queries Popes 1 3 6 1 Query Request lt simpleType name QuerySelectionPolicy gt lt restriction base xsd string gt lt enumeration value POLICY_XOR gt lt enumeration value POLICY_UNION gt lt enumeration value POLICY_
230. o account 146 ToolTips ipt gini To do so you should extend replace the toolTips plugin See Section 2 3 3 Extending a Plugin You can name it ProjectToolTips for example So create a ClientProjectToolTips php file containing something like require_once CustomLayers php Client part of ClientToolTips plugin package Plugins S class ClientProjectToolTips extends ClientToolTips see PluginManager replacePlugin A public function replacePlugin Depia Meoki i Then create a new PHP file in the same directory named CustomLayers php Important The name of the class that extends ByxyQueryableLayer should match the layerId It should look like class DepQueryableLayer extends ByXyQueryableLayer public function 2 construcey parentor CONSETUEEAT Sthis gt addReturnedAttribute nom_chf_l Sets the type of Resulthayer returned by ResultLayer queryhayer see QueryableLayer newLayerResult E protected function newLayerResult return new DepLayerResult class DepLayerResult extends LayerResult see LayerResult renderResult af public function renderResult Ssmarty Ssmarty gt assign layerId Sthis gt getId Ssmarty gt assign layerLabel Encoder encode S this gt getLabel config Ssmarty gt assign depName Sthis gt getAttribute nom_dept Ssmarty gt assign depCode Sthis gt get
231. oclient tp1 by including the toolbar tp1 template at the correct places with the correct group indexes as follows include file toolbar tpl group 2 For more information about templates writing see Chapter 18 Templating 4 4 3 Plugins Template folder Target Id When using CartoWeb with ajax mode enabled all plugins which need to update some page content require an id to target the correct element in the template The following plugins are known to have this behaviour layers default target id folder2 outline default target id folder geostat default target id folders 41 Configuration Files The targeted element are usualy the menu tabs containing each plugin specific interface If you want to modify the default target id you can simply add the following parameter in the corresponding plugin s ini file on CLIENT SIDE For example folderId layerTree See actual usage in the demoCW3 project 4 5 Developer Specific Configuration Some configuration parameters can be activated to retrieve more display information targetted to the developers like special timing messages or setting the Php configuration to display notices on the page These configuration options are described below Warning These parameters will be overrided by the profile parameter See Section 4 1 Common client ini and server ini Options These parameters are available in client_conf client ini for client and server
232. ode adr_town town config Adresses provider id gid config Adresses provider columns adr_num adr_street adr_zip adr_town config Adresses provider sortColumn adr_num config Adresses provider sortDirection asc config Adresses provider sortPriorities adr_num adr_street adr_zip adr_town config Adresses formatter type smarty config Adresses formatter template search_results config Adresses provider where adr_street like adr_street_init and adr_town like adr_town_in As you can see we have have declared 3 search configurations that are pointing on the same database entity The first two tables are used for initializing the select They are not of type FullTextTable as we do not want to use the default search comportement So the provider label and provider fulltextColumns are not used There is also a new configuration parameter that is config Adresses provider where This parameter allows to specifiy a where clause The where clause is written in traditional sql but the data corresponding to the value of the form have to be replaced by the_field_name Warning Do not forget to remove the search_ prefix that is in the select field when defining the the_field_name parameter in the ini file For the first two tables the template file have been modified in order not to give back a result table but a select containing all the data required config Adresses_init_street formatter type smarty config Adr
233. ographic Functionalities 2 1 Introduction CartoWeb is quite a complex piece of software This chapter is only a quick and consequently incomplete overview of the standard functionalities that are somehow visible for an end user The internal architecture and all the hidden features that make CartoWeb customizable and extensible are presented in the next chapter 2 2 Overview The first figure is an overall view of the user interface of the demo that is shipped with CartoWeb The numbers refer to more or less visible underlying features They are Main map Dynamic keymap Navigation tools zoom in zoo out panning Layers tree Geographic query tool Redlining tools to draw points lines rectangles polygons Measuring tools distances and surfaces Language switch internationalization support Login link users and roles support 10 Print dialog PDF production Cartographic Functionalities a LEST aiii Camptocamp CartoWeb3 Demonstration GIS IT Engineering About Outline Themes Print Search Background C None C Vector Raster Human activities BM Toms O Tow Agglomeration Bo Transports GC N Roads r Category Hydrology v amp teelands VV Rivers F m DB s Retesh o 41 82 123 164 kw 171500000 z Scale Mapsize 620x420 7 Powered by CartoWeb Camptocamp SA 2 3 Navigation Interface There are many possibilities to navigate
234. ole Warning Don t forget to set applySecurity to True in the layers ini CartoClient configuration file in client_conf otherwise security metadata keys won t be taken into account 15 4 2 PDF Printing Permissions The roles management in Pdf printing is explained in detail in Chapter 12 PDF Export In particular see Section 12 3 5 Roles Management plugin 119 Throttling Configuration 16 Throttling Configuration 16 1 Introduction The throttling plugin allows to protect a cartoweb instance against fast and massive usage from users For example if a user tries to download all your map data using a shell script with a combination of mode image and recenter_bbox GET parameters If the plugin detects that a user represented by its IP address is using the application in a such wrong way the user will be blacklisted for a configurable number a seconds and will receive an HTTP error code The throttling plugin is not a core plugin That s why you need to enable it if you want to enable users to log in See Chapter 4 Configuration Files how to enable it in the list of plugins 16 2 Throttling configuration In practice you have to define rules of maximum request allowed in a certain period If the user overflow one such rule he is blacklisted as described above 16 2 1 Main throttling configuration The plugin configuration file is located in client_conf throttling ini The configuration opt
235. on Logger note Output something in the JSTraceDebugger window you can also define functions Ia hi AjaxPlugins YourPlugin Actions AnotherAction buildPostRequest function argObject return AjaxHandler buildPostRequest hi Warning BE CAREFUL FOR CLOSING and these are json syntax and it is a bit different than your usual javascript e buildPostRequest is always executed it simply parses your html and recover all the inputs text hidden select radio checkbox password textarea values and send them to the server e onBeforeAjaxCall and onAfterAjaxCall are optional These functions are called before and after the action For example if you want to modify some inputs value just before it s being sent to the server Or you want too add some post treatments Note that onAfterAjaxCall is called AFTER the response is being treated in the normal handleResponse Stage see Section 21 2 4 1 Ajax Answer Handling e onBeforeAjaxCallGeneral and onAfterAjaxCallGeneral are optional These functions are called EVERYTIME an AJAX call is triggered by ANY plugins If you add these functions in your plugin the functions will be called even if the action was triggered by another plugin onBeforeAjaxCallGeneral is called BEFORE onBeforeAjaxCall onAfterAjaxCallGeneral is called AFTER onAfterAjaxCall 21 2 4 2 1 Add Event 140 AJAX If the html fragment your are inserting must
236. on backgroundColor ff0000 blocks tableCaption color white blocks tableCaption content Table test blocks tableCaption height 15 blocks tableHeaders backgroundColor ffaaaa blocks tableHeaders fontBold true blocks tableHeaders color eeeeff Tip A special table block exists to specify which TableGroup see Section 2 4 3 1 Tables Structures you want to display in the PDF blocks queryResult content query In that case only the TableGroup query is visible but you can specify more than one separate by comma If this block is not defined in the configuration file all TableGroup are visible in the PDF file backward compatibility The query results data come from the plugin Table which offers the mechanism of table rules see Section 2 4 3 2 Setting Rules which describes how tables must be displayed You can also add table rules specificaly for the PDF output like this example SoutputType S this gt cartoclient gt getOutputType if SoutputType Cartoclient OUTPUT_HTML_VIEWER cules for HTML output if SoutputType pdf rules for PDF output output Type is generally the export plugin name without the export prefix 12 3 4 6 Legend Block There is usually only one instance of legend block in a CartoWeb PDF document It gives the list of the selected layer class icon couples Content is automatically retrieved according to selected layers
237. on must be disabled in client s query ini in order to use above parameters see Section 9 1 Client side Configuration Tip To make CartoWeb outputs a map as a raw image file no HTML generated you may use the GET parameter mode image For instance http example com cartoweb3 client php mode image mapsize 2 2 4 2 3 Example The following class implements a filter which allows to recenter on an object while hilighting it class ClientFilterIdrecenter extends ClientPlugin implements FilterProvider public function filterPostRequest FilterRequestModifier S request public function filterGetRequest FilterRequestModifier Srequest Sid Srequest gt getValue id ie KS aS yy Slayer grid_classhilight 232 New Plugins Srequest gt setValue query_layer Slayer Srequest gt setValue query_maskmode 1 Srequest gt setValue query_select id Srequest gt setValue id_recenter_layer Slayer Srequest gt setValue id_recenter_ids id 2 4 3 Tables Tables plugin is responsible for table formatting and display 2 4 3 1 Tables Structures Tables plugin declares several structures to help plugin developer manage tables These structures are e Class Table which includes in particular a list of rows class TableRow e Class TableGroup which includes in particular a list of tables Table groups are used for instance to separate table results coming from sever
238. on the map It handles bboxes visible areas and scales it drives the tools zoom in zoom out and panning the directional arrows around the main map and the overview map The corresponding configuration files are Location ini client side and location ini server side 7 1 Client side Configuration Here are the options that can be set e scalesActive boolean if true the scales dropdown list is displayed default false If no visible scales are defined on the server a simple input text will be displayed e freeScaleActive boolean if true the free scales input is displayed default false This allow the user to freely set a scale value that is different from the predefined scales There are a few conditions for this to work o scalesActive must be activated see above o scaleModeDiscrete must be deactivated false see Server side Configuration o location js must be loaded o prototype js must be loaded by default if ajax is on e recenterActive boolean if true the coords recentering form is displayed default false e idRecenterActive boolean if true the id recentering fields will be displayed default false e idRecenterLayers the comma separated list of layers which will appear in the id recentering selection form If this list is absent all msLayers appear in the form e shortcutsActive boolean if true the shortcuts direct access dropdown list are displayed default false e scaleUnitLimit sca
239. on the main map that is to change the scale and the position e The arrows surrounding the main map e The dynamic i e clickable keymap e The navigation tools zoom and pan e The drop down menu Scale e The various options in the Search tab The menu Mapsize is self explanatory 2 4 Arbitrarily Complex Hierarchy of Layers Contrary to Mapserver itself CartoWeb supports an arbitrarily complex hierarchy of layers with infinite depth The elements of the layers tree have different rendering options e normal checkboxes Cartographic Functionalities e blocks e radio button exclusive options e drop down menu exclusive options Examples of these rendering options are presented in the following figure Background Human activities El O T owns O T owun Agglomeration El E Transports E iV Roads Oa Category Relief El M hiountains A gt 3500m 2500m M O loelands The icons for the classes are automatically drawn and the out of scale layers are grayed out 2 5 Map Queries Using the query tool you can geographically search for objects Found objects are hilighted and their attributes are displayed CartoWeb adds many functionalities to the raw queries supported by Mapserver In particular the queries may be persistent i e you can add new objects to already selected objects and the hilighting can be defined on a layer by layer basis Cartographic Functional
240. ons AS SELECT FROM roads_europe WHERE gid in SHEECIRG1deEROM SELHCIS DiS TENGE sony sourcemad ane c m somccen icy igard FROM roads_europe AS doublon DELETE FROM roads_europe S INSERT INTO roads_europe SELECT FROM doublons DROP TABLE doublons The following step is to create and fill the edges and vertices tables of the resulting 168 Routing plug graph To do so you can use create_graph_tables function S SELECT create_graph_tables roads_europe int4 SELECT FROM roads_europe_edges LIMIT 3 id source target cost reverse_cost 4 4 4 4 i 2m 2 SM S 4 Z 2 3 rows We can see that it contains NULL values for the cost column The function update_cost_from_distance can update the cost column with the distance of the lines contained in the geometry table attached to each edge SELECT update_cost_from_distance roads_europe The costs are now id source target cost reverse_cost 4 4 4 i ij 2 6657 4656 5793103 2 2a AS99252 Zan l 6 14040 5673116933 3 lignes Then you need to add the column which will contain the town labels which will be shown in the drop down list for selecting the two points of a path The label information is contained in the roads table which was originally imported using the shp2pgsql utility The following commands wil
241. ormat add the format to the list Sroles this gt getRolesForFormat format this should get it from the ini if SecurityManager getInstance gt hasRole S roles continue skips unauthorized resolution for this user do the work with the format in the routine handling the user passed parameters to the same check as above 245 Internationalization 5 Internationalization 5 1 Translations Texts to be translated can be found in e Smarty templates see Section 18 2 Internationalization e Client and server ini files and map files see Chapter 4 Configuration Files e Client and server PHP code In the last case the script which finds strings to be translated see Section 17 1 2 PO Templates looks for calls to gt functions There are two different gt functions e 118n gt tries to translate the string given as argument and returns the translation This function assumes that string is UTF 8 encoded and returns a string ready for output see Section 5 2 Character Set Encoding It can be used on client side only e 118nNoop gt does nothing during runtime noop stands for no operations Call to this function is only needed to indicates that the string must be translated This function can be used on client and server side Below is an example on how to use I18nNoop gt Example for use of I118n gt functions client side a class ClientMyPl
242. ortPdf ini file see Chapter 12 PDF Export Biche C 9 Templating and Layout Create a new templates folder in your project directory and move the cartoclient tpl file from sampleFiles to this new folder This file is the main template for CartoWeb Refresh the application in your browser refresh button and enjoy To customize your project even more you may apply styles sheets To do so first create a htdocs folder in your project directory In this folder create a new folder named css Then move cartoweb css and folders css from sampleFiles to this new folder At this step you need to launch the setup script so that the new ressources you just created are copied or linked depending on your OS in a web reachable folder You can now refresh the browser and see the new colors and styles 287 DocBook Documentation Generation Appendix D DocBook Documentation Generation CartoWeb documentation source are in DocBook XML http www docbook org format and located in document at ion user_manual source in CartoWeb archive You may want to generate it by yourself in order to produce XHTML or PDF output D 1 Documentation Generation on UNIX like System D 1 1 Tiny DocBook Install Uncompress the tiny docbook 1 6 19 tar bz2 http www cartoweb org downloads docbook tiny docbook 1 6 19 tar bz2 archive somewhere in your filesystem Execute S configure enable install make install to install and configure T
243. our project client_conf client ini and server_conf lt mapId gt lt mapId gt ini Search use is mainly based on three files client_conf search ini plugins search htdocs js Search ajax js and plugins search templates search tpl The search plugin uses the PEAR DB abstraction class and should be able to handle all databases supported by PEAR DB 24 3 Basic Sample 24 3 1 Basic Mechanism and Setup The data set and the query specification are set in the search ini file The design and the fields of the search form is set in the search tp1 file The search behavior mainly reside in the Search ajax js Let s imagine that we want to do a search with a recenter on data that are represented on a layer Addresses The source of the data is a table in a PostGIS database 149 Search plugin The data are stored in a table addresses with the followings rows num street zipcode town gid and the_geom Primary key is gid First we have to set the configuration in the client_conf client ini search ini like this dsn SEARCHDSN encodingContext myencoding_context Do not forget to add EncoderClass myencoding_context EncoderISO or any other context im your client cont cient aa config Adresses provider type fulltextTable config Adresses provider table addresses config Adresses provider aliases adr_num num adr_street street adr_zip zipcode adr_town town config Adresses provider id gid config Adr
244. ove all to make HTML codes easier to read and maintain some HTML coding guidelines should be followed e for indentation preferably use 2 white spaces such an indentation might be used for javascript coding as well e Generated HTML pages should be XHTML 1 0 say Transitional for now valid and pass matching W3C validation http validator w3 org http validator w3 org 252 Code Convention XHTML standing for eXtensible Hypertext Markup Language was chosen vs simple HTML for following reasons e XHTML is aimed to replace HTML e XHTML is a stricter and cleaner version of HTML e XHTML is HTML defined as an XML application For more information on XHTML reference and tutorial are available here http www w3schools com xhtml Specially useful pages are e Differences between HTML and XHTML http www w3schools com xhtml xhtml_html asp e XHTML syntax http www w3schools com xhtml xhtml_syntax asp But here are some things people must know to get XHTML valid generated pages 6 4 1 Nesting In HTML some elements can be improperly nested within each other like this lt b gt lt i gt This text is bold and italic lt b gt lt i gt In XHTML all elements must be properly nested within each other like this lt b gt lt i gt This text is bold and italic lt i gt lt b gt All XHTML elements must be nested within the lt html gt root element All other elements can have sub children elements Sub elements must
245. p dimensions are defined in the exportRtf ini e QUERYRESULTS stands for the query results If you want to customize the table output edit the results tpl file e SCALEBAR stands for the scale bar e KEYMAP stands for the minimap You can apply word formatting and alignment to your tags The formatting will then be reported to their contents Warning When you write your tags in the file please write them in a continuous way and without spaces and or formatting If you want to apply any formatting you need to select all the tags with the included If by mistake an RTF tag is inserted inside the brackets you will have to erase the tag and rewrite it or edit the RTF sources and remove the RTF keywords 11 5 2 Configuration parameters You will find some configuration parameters in the exportRtf ini file fields shown in the form activatedBlocks mainmap title scalebar overview queryResult dimention of the map in pixels X Y mapDimention 400 400 allowed roles for the Auth plugin allowedRoles all Rise oaeo es 84 Exp ort Plugins plugin exportCsv exportHtml exportDxf exportRtf exportImg optionalValues ref num other 11 5 3 Optional Inputs You can add free dynamic content inside your RTF For instance to insert a reference number in you RTF file First you have to add the name of your optional fields in the exportRtf ini file Please do not use special characters there Pl
246. p files configuration files etc are encoded on server and on client To set this encoding add the following line in server ini and in client ini EncoderClass config lt encoder_class gt how source data shapefile database must be encoded To set this encoding add the following line in client ini EncoderClass data lt encoder_class gt If not set default to the same encoding as config to keep backward compatibility how CartoWeb exports including HTML output must be encoded To set this encoding add the following line in client ini EncoderClass output lt encoder_class gt Where lt encoder_class gt is the class used for encoding Currently following encoder classes are implemented EncoderISo handles strings coded in ISO 8859 1 EncoderuUTF handles strings coded in UTF 8 17 3 Character Set Encoding Configuration for Data 128 Internationalization Sources When you have layers data with heterogeneous encoding typicaly iso and utf8 you can define specific EncoderClass by layer Simply add data_encoding in the METADATA section in the mapfile or in the layers ini for the layers which need it The encoding used when reading data depends of the parameters set The fallback order is e data_encoding in mapfile or layers ini with the corresponding EncoderClass in client ini specific by layer e EncoderClass data client ini general for all layers e EncoderClass config client i
247. parated list of strings list of additional fonts to import in FPDF not available for other pdfEngines Each font contains the font family name the font style optional and the font PHP definition file optional separated by PHP definition files must be uploaded in FPDF fonts directory Parameters are described in FPDF AddFont documentation http fpdf org en doc addfont htm Definition files generation is explained here http fpdf org en tutorial tuto7 htm Example general extraFonts Comic I comici php MyFont BI myfontbi php MyOtherFont e general outputFormat string define a specific outputFormat to use for the exported image A corresponding OUTPUTFORMAT must exist in the mapfile bd general specialLayers lt layername gt addBlocks comma separated list of strings if layer layername is activated the given blocks will be added to the list of activated blocks see general activatedBlocks To add blocks for several layers use dedicated lines with matching layer names e general specialLayers lt layername gt removeBlocks comma separated list of strings if layer layername is activated the given blocks will be removed from the list of activated blocks see general act ivatedBlocks To remove blocks for several layers use dedicated lines with matching layer names PHP built in default values e pdfEngine CwFpdf e pdfVersion 1 3 e guiMode classic e distUnit mm 89 PDF Export fpi gi i
248. ple when copying them from your test server to your production one e run different projects on the same CartoWeb instance For more information about projects see Chapter 3 Projects Handling 3 5 Templates CartoWeb layout customization is achieved using the well known and powerful Smarty http smarty php net template engine For more information about templating see Chapter 18 Templating 3 6 Users and Roles CartoWeb enables to define and manage different levels of permissions Thus it is possible to restrict some or all functionalities to some users or categories of users For more information about users and roles see Chapter 15 Security Configuration 3 7 Performance Enhancement CartoWeb takes benefits of several caching systems to speed up its execution All the possibilities are detailed in Chapter 5 Caches Configuration 14 User Manual Part Il User Manual This user manual second part of the CartoWeb documentation is aimed at administrators who have to setup configure and maintain a CartoWeb environment It is not an end user documentation so you won t find here instructions on how to navigate select layers or do whatever operations the distant users are allowed to do through their browser On the other side if you want to go beyond the standard out of the box possibilities of CartoWeb you ll definitely have to look at the third part of this documentation intended for developers 15 Instal
249. pleType gt ZOOM_DIRECTION_IN zoom in default is x2 ZOOM_DIRECTION_NONE no zoom recenter on point only ZOOM_DIRECTION_OUT zoom out default is x0 5 ZOOM_FACTOR zoom using a custom factor ZOOM_SCALE zoom to a fixed scale lt complexType name ZoomPointLocationRequest gt lt euLik gt lt element name bbox type types Bbox gt lt element name point type types Point gt lt element name zoomType type types ZoomType gt lt element name zoomFactor type xsd float minOccurs 0 gt lt element name scale type xsd integer minOccurs 0 gt lt fall gt lt complexType gt 201 Calling Plugins e bbox bounding box unused when zoom type ZOOM_SCALE e point point to recenter on e zoomType type of zoom e zoomFactor zoom factor unused when zoom type ZOOM_FACTOR e scale fixed scale unused when zoom type ZOOM_SCALE 1 3 5 1 4 Recenter Request lt complexType name IdSelection gt lt all gt lt element name layerId type xsd string gt lt element name idAttribute type xsd string gt lt element name idType type xsd string gt lt element name selectedIds type types ArrayOfString gt lt all gt lt complexType gt e layerld ID of layer on which query will be executed e idAttribute name of ID attribute e idType type of ID attribute string or int e selectedIds list of IDs lt complexType name ArrayOfIdSelection gt lt complexCo
250. purpose of this cache option So it should be activated in production environment and turned off during development if your changes have an impact on the WSDL 5 3 MapInfo Cache MapInfo is a structure generated on the server and used by the cartoclient to access static server information This cache keeps a copy of the MapInfo structure on the http smarty php net 43 Caches Configuration client or the server so that the client does not need ask it everytime and the server can avoid regenerating it from scratch 5 4 MapResult Cache This is a server side only cache which caches the requests made to the server This cache works at the Php level meaning that it can be used when CartoWeb is used in direct or SOAP mode For the distinction between these two modes see Section 4 2 client ini However the XML SOAP cache is more appropriate when using SOAP mode see details in the next chapter 5 5 XML SOAP Cache This one is also a server side only cache caching requests at the lowlevel XML SOAP exchange This means this cache is only effective when direct mode is not used and can be used for any webservice for which the output only depends on the input arguments 5 6 Caches Configuration 5 6 1 Rationale All cache configuration name are in the form noxxxName where xxx is the name of the cache This is so so that if the parameter is not available its default value will be false meaning that all caches are
251. r Reinstall CartoWeb from CVS and Set Up It at Once for more details Once you have CartoWeb point your web browser to the file located in htdocs info php and check that the PHP information page displays correctly meaning PHP is correctly setup and that you have do not have a WARNING message at the top of the page about MapScript failing to load If it is not the case CartoWeb will not run correctly You should install and set up PHP and PHP MapScript correctly See Section 1 1 1 Prerequisite for Installing CartoWeb Having Gettext installed is recommended if you wish to use the multilingual features of CartoWeb 1 1 3 Command Line Installation CartoWeb installer is cw3setup php located in the root directory of the application You can run this file with the help parameter to see the available options For instance lt PHP INTERPRETER gt cw3setup php help where lt PHP INTERPRETER gt is the location of your php interpreter On Windows it can be c ms4w Apache cgi bin php exe or on Unix usr lib cgi bin php Note There is a deployment mechanism to automate CartoWeb installation and updates If you are using different servers like development tests and production it is highly recommended to use it http www cartoweb org cwiki AutomaticDeployment 1 1 3 1 List of Available Options Usage cw3setup php ACTION OPTION_1 OPTION_N Possible actions ne tex Ia Display this help and exit
252. r horizontal positioning verticalBasis toplbottom indicates what document side must be used for vertical positioning hCentered boolean if true block is horizontally centered overloads horizontalBasis property vCentered boolean if true block is vertically centered overloads verticalBasis property textAlign centerlleftlright indicates how content must be horizontally aligned within the block extent verticalAlign centerltoplbottom indicates how content must be vertically aligned within the block extent orientation horizontallvertical indicates if content will be displayed form left to right or from bottom to top only for text blocks z Index integer indicates how overlapping blocks must be stacked The higher the zIndex the higher the block in the stack foreground weight integer indicates in what order blocks with the same zIndex must be processed Low weighted blocks are handled first inNewPage boolean indicates if a new page must be added before printing the block 92 PDF Export plugin e inLastPages boolean indicates if block must be added in a new page at the end of the document e width float block width in distUnit e height float block height in distUnit e multiPage boolean if true given block will be displayed on every document page e parent string if specified current block will be printed inside given parent block e inF low boolean if tru
253. r type css plugin hello toto css r o generated URL nello css toto css e Projects o path projects myproject htdocs css toto css o Smarty r type css toto css r o generated URL myproject css toto css e Projects Coreplugins override o path projects myproject coreplugins layers htdocs css toto css o Smarty r type css plugin layers toto css r o generated URL myproject layers css toto css e Projects Plugins override o path projects myproject plugins hello htdocs css toto css o Smarty r type css plugin hello toto css r o generated URL myproject hello css toto css e Projects specific plugins o path projects myproject plugins myplugin htdocs css toto css o Smarty r type css plugin myplugin toto css r o generated URL myproject myplugin css toto css 131 Accounting plugin 19 Accounting rplugin CartoWeb provides a mechanism to store accounting informations These informations can be used to generate statistics of the application usage 19 1 Accounting Configuration 19 1 1 Introduction Accounting configuration specifies if the accounting is enabled or not and how to store the accounting information The configuration is the same for the client or server Notice however that if you are using CartoWeb in direct mode the server accounting configuration is not taken into account See Section 4 2 client ini for more information about direct mode When you enable accounting you also need to
254. race display It is easily understood as the list of functions called and the line numbers where the call happened Failure class SoapFault message Error 8 Undefined property ServerMapquery currentQeury var www cartoweb3 coreplugins mapquery server ServerMapquery php 222 Backtrace file 182 var www cartoweb3 common Common php call Common cartowebErrorHandler file 222 var www cartoweb3 coreplugins mapquery server ServerMapquery php call Common cartowebErrorHandler file 222 var www cartoweb3 coreplugins mapquery server ServerMapquery php call ServerMapquery queryByBbox file 248 var www cartoweb3 coreplugins query server ServerQuery php call ServerMapquery gt queryByBbox 8 Undefined property ServerMapquery ScurrentQeury var www cartoweb3 coreplugins mapquery server 222 Array 2 file 369 var www cartoweb3 coreplugins query server ServerQuery php call ServerQuery gt queryLayer polygon Object Bbox file 58 var www cartoweb3 server ServerPluginHelper php call ServerQuery gt handlePreDrawing Object Bbox Object QuerySelection file 96 var www cartoweb3 server ServerPluginHelper php call ClientResponderHelper gt callHandleFunction Object QueryRequest 9 3 2 Using Direct for More Verbosity In some situations a fatal error on the server will display a message with not much verbosity 268 Logging and Debugging Failure
255. requests are well structured In addition WSDL is necessary when interfacing the Web Service with a strong typed language built application Cache options See Section 5 6 Caches Configuration Developer options See Section 4 5 Developer Specific Configuration 4 2 client ini CartoServer access configuration e cartoserverDirectAccess truelfalse toggles between SOAP and direct modes Direct access gives enhanced performances but is only available if CartoServer runs on the same server as CartoClient e cartoclientBaseUrl base URL of the CartoClient e cartoserverBaseUrl base URL of the CartoServer i e path containing the cartoserver wsdl php file 35 Configuration Files Mapfile configuration e mapld string e initialMapStateld string Tells what initialMapState to use when creating a new CartoWeb session see also Section 4 3 3 3 Initial Mapstates Tip initialMapStateId may be determined using several means By order of priority 1 URLs using GET parameter initialState 2 PHP environment variables Place S_ENV CW3_INITIAL_MAP_STATE_ID foobar in your PHP code before calling CartoWeb 3 client ini 4 If no initialMapStateId can be determined CartoWeb use first initialMapState available Session handling e sessionNameSuffix string Optional suffix used to distinguish CartoClient sessions parts for a given user In most cases it is not necessary but may
256. rfaces see client 220 New Plugins ClientPlugin php and server ServerPlugin php files or take a look at the CartoWeb PHP API documentation CartoWeb3 Plugins Board Plugins interfaces summary and entry points timeline for CartoClient and CartoServer CartoClient CartoServer 1 1 4 1 P Ajaxable ajaxHandleAction ER Oe ClientResponder ajaxGetPluginResponse initializeRequest 1 I i I I I I preinitialize I i I handlePreDrawing lize I initiali handleDrawing eppo InitProvider getinit handlePostDrawing InitUser handlelnit InitProvider getinit Exportable adjustExportMapRequest FilterProvider i fiterPostRequest filterGetRequest CoreProvider 1 1 I I 1 1 FilterProvider fiterPostRequest 1 FilterProvider fiterGetRequest 1 1 1 1 1 1 I GuiProvider handleCorePlugin handleHttpPostRequest x x x handleHttpGetRequest renderForm GuiProvider handleHttpPostRequest GuiProvider handleHtipGetRequest I 1 I 1 I 1 1 I 1 1 1 1 ServerCaller buildRequest I l ServerCaller overrideRequest _ Inktislize 1 1 I 1 I 1 1 I 1 I 1 I 1 1 I I l I 1 I 1 1 I I I 1 1 I I I 1 l I I InitUser i I ClientResponder initializeRequest 1 I I 1 I I I I I I I I I 1 I I I 1 I I I I 1 I handleinit ServerCaller CliontResponder overrideRequest Duil
257. rings that can be translated e layers layerld icon filename filename of the static picto that illustrates this Layer in the layer tree The file is expected to be in server_conf lt mapId gt icons and a setup script launch is in most cases required See also Section 6 4 Layers Legends for a description of the automatic legending process e layers layerld link url provides a link for the layer e g to some metadata makes the caption in the tree clickable 6 2 3 LayerGroups Options 47 Layers coreplugin Here is the syntax for the various configuration parameters of LayerGroups Note that a special LayerGroup with layerld root must be present Unsurprisingly it is the root top level of the hierarchy It doesn t appear in the visible tree e layers layerld className LayerGroup defines the object as a LayerGroup layerld is a string that uniquely identifies the object The general rules of syntax for a ini file must be respected in the choice of the layerld e g no are allowed e layers layerld children list of layerlds comma separated list of layerIds these children may be Layers or other LayerGroups e layers layerld children switchId list of layerlds comma separated list of layerlds when using switching see Section 6 2 4 Children Switching This option cannot be used together with simple children option e layers layerld aggregate truelfalse if true the children objects are not
258. rname s AND password s dbSecurityQueryRoles The SQL query used to retrieve roles for a given user It should return one column with all roles for the user each row For instance SELECT roles FROM users WHERE username s 15 2 1 2 ldap storage The following parameters are inspired from Pear Auth_Container_LDAP host hostname of the server that hosts the ldap server localhost default ldap netsols de port Port number on which the ldap server listens 389 default basedn the base dn Distinguished Name of the ldap server For instance dc ldap dc netsols dc de userattr the user attribute to search for uid default groupdn gets prepended to basedn when searching for group For instance ou Groups groupattr the group attribute to search for cn default groupfilter filter that will be added to the search filter when searching for a group amp groupattr group memberattr username groupfilter objectClass groupOfUniqueNames default For instance objectClass posixGroup Or cn cw objectClass posixGroup if you have groups starting with cw specifically set for Cartoweb memberattr the attribute of the group object where the user dn may be found uniqueMember default groupscope Scope for group searching one sub default or base 15 2 2 Special Role Names The auth plugin configuration described in the previous section references the notion of users and roles
259. rojects folder of Cartoweb Rename the sampleProject directory to the name of your project Edit the client ini in of this new project and modify the mapId parameter value with the name of your project mapId your_project_name Open the server_conf directory and rename the samplePro ject directory to the name of your project In this folder two more files need to be renamed sampleProject map and sampleProject ini with the name of the new project C 2 Setup Your Project In acommand line prompt DOS shell launch the cw3setup php setup script lt PHP INTERPRETER gt cw3setup php install base url http localhost cartoweb3 htdocs profile development project lt nameOfYourProject gt See Chapter 1 Installation for more info on the installation script If no error occured you should be able to access your project by typing http localhost cartoweb3 htdocs client php in your browser and selecting your project from the projects drop down menu C 3 Project Shortcut To make development easier you can create a shortcut file to access your project directly Go in cartoweb3 htdocs and copy the file democw3 php Rename the file to any name usually your project name Edit the file and replace demoCW3 by your_project_name Your project is now directly available with the URL http localhost cartoweb3 htdocs your_project_name php the URL given above depends on your installation see the previous comment
260. rs coreplugin As seen before the Layer object maps directly to a layer in the mapfile By default all layers in the mapfile are made available as a Layer in the layers ini with an identifier having the same name as the name of the mapserver layer Thus if you have the following option in your mapfile LAYER NAME my_layer TYPE line END This is equivalent as writing the following configuration in the layers ini layers my_layer class Layer layers my_layer label my_layer layers my_layer msLayer my_layer Tip If you don t need special parameters see below for your layer then you can avoid adding it in the layers ini However if you want these layers to appear in the layer list you still have the responsibility to affect them a parent layer using the children property of the LayerGroup layer declarations Here is the syntax for the various configuration parameters of a Layer e layers layerld className Layer defines the object as a Layer layerld is a string that uniquely identifies the object The general rules of syntax for a ini file must be respected in the choice of the layerld e g no are allowed e layers layerld msLayer string name of the corresponding Mapserver layer in the mapfile e layers layerld label string caption of the layer in the layer tree on the client this is a raw label before any internationalization The 118n scripts automatically include this label in the st
261. rs boolean if true outdated views loadings will be logged in 10g viewErrors log e viewUpgradeOut dated boolean if true CartoWeb will try to upgrade outdated views on the fly Else view outdated parts will be discarded and current plugin session data will be used instead e viewHooksClassName string name of the PHP class used to customize some views processing See Section 11 3 Customizing Views Processing Using Project Hooks for details on how to write customized views hooks For instance Views management viewOn true viewStorage db viewablePlugins location layers query outline viewMetas author viewDsn pgsql www data localhost cw3 viewAuth admin viewSavedRequest personalVarl personalVar2 viewLogErrors true 108 Views flugin viewUpgradeOutdated true viewHooksClassName FoobarViewHooks Should you decide to use a database storage you would need first to create an appropriate table called views Here is an example of SQL statements for PostgreSQL CREATE TABLE views views_id serial NOT NULL PRIMARY KEY views_ts timestamp without time zone viewtitle character varying 50 author character varying 50 sessiondata text viewshow boolean weight integer Tip Field views_ts is just present in table views but not visible in the graphical interface of the views plugin This value is usefull to know the time of the creation modification of a view only avai
262. rs and styles should be set with specific configuration in the mapfile See Section 10 3 Related Elements in Mapfile The total area of the drawn polygons is displayed on the interface 10 1 Client side Configuration 10 1 1 outline ini Here are the options that can be set on the client e multipleShapes boolean if true the user is allowed to draw multiple shapes That means that drawn features remain until browser session is closed If false will outline only one shape at a time new feature simply erases overrides currently drawn one When he wants the user can erase all the drawn feature by clicking on the outline_clear form button default true e labelMode boolean if true user is asked to input a label text that is drawn to annotate drawn shape e displayMeasures boolean if true label text will contain surface or distance measure e weightOutlinePoint integer defining display order of the outline_point tool icon in toolbar if not specified default to 70 A negative weight disables the tool e weightOutlineLine see weightOutlinePoint default to 71 e weightOutlineRectangle see weightOutlinePoint default to 72 e weightOutlinePoly see weightOutlinePoint default to 73 e weightOutlineCircle see weightOutlinePoint default to 74 72 Annotation and Redlining futugint Guine 10 2 Server side Configuration 10 2 1 outline ini Here are the options that can be set on the server e pointLa
263. rsions are always integers 11 2 2 Upgrade Filters Upgrading a view is done by sequentially applying filters each one updating it to the following version from version N to version N 1 If matching sequence cannot be detected missing filters upgrade is aborted and outdated data is discarded Current plugin data is then used instead Upgrade filters are PHP classes extending ViewUpgrader the latter class being defined at the end of client Views php They are saved in a ViewsUpgrade php file located in the same directory than the plugin client side class file for instance coreplugins location client Filters naming convention is lt UppercasedPluginName gt V lt initialVersion gt ToV lt initialVersion tl1 gt Some basic methods rename remove add are available in every filters but you may 273 Upgrading Views Data define your own transformers methods Details about basic methods are given in ViewUpgrader Class documentation CartoWeb API manual At least an upgrade filter class must redefine the cal1Filters method that indicates the sequence of transformations to apply An example of filters might be lt php coreplugins location client ViewsUpgrade php s Class rese i var game arkanoid var Si A Upgrades from V1 to V2 SA class LocationV1ToV2 extends ViewUpgrader protected function callFilters PENIS radad CESE LOCOS Upgrades from V2 to V3 aA c
264. rty gt assign table Sresult gt table TelLurn Se marty er chn sinis templete 2 et pl yy Warning Do not forget to modify the formatter in the ini file You have to implements the getResponse function It should return a string The result variable correspond to the value return by the provider 161 OGC Layer Loader plugin 25 OGC Layer Loader plu gin 25 1 Introduction The ogcLayerLoader plugin allows user to add OGC layers such as WMS and WFS through a call by URL For exemple using a simple URL you could call your cartoweb project and add an OGC layer at startup Once the layer added the coreplugin Layer will be called to update user layers Added layer could then be used by other plugin in the project legend layer reorder This plugin is used by wmsBrowserLight and catalog to add OGC layers to the map 25 2 Plugin Activation To activate the plugin load from both CartoClient and CartoServer configuration files cLient_conf client ini and server_conf mapId mapid ini For instance loadPlugins mapOverlay ogcLayerLoader 25 3 Define where to insert OGC layers To do so in server_conf mapId ogcLayerLoader ini set the following parameters in the ini file of the plugin ogcInsertLayerAfter raster raster is the name of the layer 25 4 Specify in which layergroup you want to insert OGC layers To do so in client_conf layers ini set the following param
265. rue 21 2 2 Plugin Ajaxisation Generalities There are several steps needed to add ajax support to a plugin e PHP e javascript e template 21 2 3 PHP side Your plugin php class must implements the Ajaxable interface class ClientYourPlugin extends ClientPlugin implements Ajaxable You can then add two functions e ajaxGetPluginResponse e ajaxHandleAction 21 2 3 1 ajaxGetPluginResponse ajaxGetP luginResponse will send back your plugin s response It behaves the same way as the usual renderForm function instead of doing Stemplate gt assign some_content you do SajaxPluginResponse gt addHtmlCode some_variable_name Ssome_content SajaxPluginResponse gt addVariable another_variable_name S some_content HtmlCode and Variable are pretty much the same thing it only differentiates the treatments between html output and javascript variables 21 2 3 2 ajaxHandleAction 137 AJAX ajaxHandleAction is where you specify which plugin s is activated when an action is triggered through your plugin The content is usualy a switch on the action name switch SactionName case YourPlugin SomeAction SpluginEnabler gt disableCoreplugins SpluginEnabler gt enablePlugin images j SpluginEnabler gt enablePlugin yourplugin break case YourPlugin AnotherAction SpluginEnabler gt disableCoreplugins SpluginEnabler gt enablePlugin yourplugin break You must explicit
266. s lt br gt and this lt hr gt 6 4 4 Minimization 254 Code Convention This is wrong lt dl compact gt lt input checked gt lt input readonly gt lt input disabled gt lt option selected gt lt frame noresize gt This is correct lt dl compact compact gt lt input checked checked gt lt input readonly readonly gt lt input disabled disabled gt lt option selected selected gt lt frame noresize noresize gt Here is a list of the minimized attributes in HTML and how they should be written in XHTML lt dl compact compact gt lt input checked checked gt lt input readonly readonly gt lt input disabled disabled gt lt option selected selected gt lt frame noresize noresize gt 6 4 5 Id vs Name HTML 4 01 defines a name attribute for the elements a applet frame iframe img and map In XHTML the name attribute is deprecated Use id instead This is wrong lt img src picture gif name picturel gt This is correct lt img src picture gif id picturel gt Note To interoperate with older browsers for a while you should use both name and id with identical attribute values like this lt img src picture gif id picturel name picturel gt IMPORTANT Compatibility Note To make your XHTML compatible with today s browsers you should add an extra space before the symbol 6 4 6 Image alt 255 Cod
267. s a Multi client mode Of course it is possible to combine the above architectures as shown on the following figure 3 4 Modularity Projects and Plugins 3 4 1 Plugins 12 Architecture CartoWeb buzzword is modularity The application is built as a set of bricks that interact with each other Those bricks are called plugins Each plugin performs a special group of tasks such as map browsing layers management images properties users permissions data objects querying exportation and much more CartoWeb is shipped with a set of standard plugins that can be separately activated or not It is possible to write your own plugins or customize existing ones as well H 2 UE AE E E E Regular plugins including how to configure them are precisely described in Part II User Manual For more information about how to write or customize plugins see Chapter 2 New Plugins 3 4 2 Projects 13 Architecture Projects are used to separate the upstream application from its customizations They contains all the modifications and adaptations you could have performed to make CartoWeb suit your needs layout templates pictos special configurations personal plugins etc By using projects you can e keep the general application clean from tricky modifications that would compromise the future upgrades e gather your project files to easily save and copy them to another CartoWeb instance For exam
268. s about 283 Create a New Project cartoclientBaseUrl and base url C 4 Loading Data As you can see the project you created is hopelessly empty Then we ll load spatial data in it Add the following in the mapfile your_project_name map LAYER NAME region TYPE POLYGON DATA reg_france TEMPLATE cre CLASS NAME region STYLE COLOR 240 240 240 OUTLINECOLOR 255 165 96 END END METADATA Sarat eri bule string CODES END END And in the layers ini file server_conf your_project_name add the following layers region className Layer layers region label R gions layers region msLayer region And add the new layer id in the root layer children list layers root children region For more details on how to fill the layers ini file see Chapter 6 Layers coreplugin Also edit the your_project_name ini file in a text editor in order to set some initial mapstates such as default selected layers Add the following mapInfo initialMapStates default layers region selected true See Section 4 3 3 3 Initial Mapstates for more info about initialMapStates In your browser click on the reset_session button and you should now see the France regions 284 Create a New Project C 5 Location Parameters Move the location ini file you will find in the sampleFiles folder into the server_conf your_project_name one This file defines some parameters such as scales or shortcu
269. s aware you could only have one formater for all language your project support Would perharps change with php6 version e symbolPickerHilight inversedlborderhilight set the hilight mode to use in the SymbolPicker interface See Section 10 5 3 2 SymbolPicker e symbolSize defines the size in pixel of the symbold images generated when using the symbolPicker The value is used for width and height The default value is 30 10 3 Related Elements in Mapfile 13 Annotation and Redlining plugin outline 10 3 1 Layers Specific layers must be set in the mapfile in order to draw the shapes LAYER NAME cartoweb_point_outline TIPE POLNE END LAYER NAME cartoweb_line_outline TYPE LINE END LAYER NAME cartoweb_polygon_outline TYPE POLYGON END Don t forget that layers names must be set in the server side outline ini file See Section 10 2 1 outline ini 10 3 2 Labels In case of using labels i e labelMode set to true see Section 10 1 1 outline ini a LABEL object is needed in the layers class Example LAYER NAME cartoweb_point_outline TYPE POINT CLASS STYLE END LABEL FONT Vera TYPE truetype EORORMo ero mor SEARO END END END You will find more examples looking in the test map file in server_conf directory 10 4 GET Parameters Creates outline drawing on the fly by passing a geometry type and one or more point coordinates via the URL 14
270. s client php Once it is installed you can modify CartoWeb setup with the command line script cw3setup php Section 1 1 3 Command Line Installation from either a DOS or a Cygwin prompt See Section 1 1 4 3 CartoWeb Setup for more info about how to use those interfaces 1 1 4 2 Windows Manual Install Instructions for Apache PHP and MapServer installation are given in Appendix B Apache amp Mapserver Windows Manual Installation Then download CartoWeb as described above Section 1 1 2 CartoWeb Download Eventually set CartoWeb up with the command line script cw3setup php Section 1 1 3 Command Line Installation from either a DOS or a Cygwin prompt See Section 1 1 4 3 CartoWeb Setup for more info about how to use those interfaces 1 1 4 3 CartoWeb Setup 1 1 4 3 1 CartoWeb Setup with DOS 22 Installation Open a command prompt Start menu gt Run gt cmd and go to the CartoWeb root cd C ms4w apps cartoweb3 Then see Section 1 1 3 2 1 Basic Setup Note To enable you to execute PHP scripts easily like php cw3setup php someparameters instead of C ms4w Apache cgi bin php exe cw3setup php someparameters set the path to the PHP binary in your PATH environment variable control panel gt system gt Advanced gt Environment Variables If there is no PATH variable add a new one If a PATH variable is already present you can add the path to php exe at the end
271. s given there The line log4php rootLogger DEBUG A1 can be uncommented which will activate the loggers defined in the lines starting with log4php appender NAME where NAME is the name in the list DEBUG Ai After the loggers are activated the the log output will be redirected to the corresponding location In the line Log4php appender Al file LOG_HOME cartoclient log the LOG_HOME variable has a special meaning it is expanded to the log directory of the CartoWeb distribution One powerful feature of Log4php among others is the ability to filter log message 266 Logging and Debugging according to their severity Each log message has a severity which may be ALL DEBUG INFO WARN ERROR FATAL OFF As described in the configuration file comments the lines like log4php logger CLASSNAME can be used to apply a filtering of the log message for the class CLASSNAME For instance adding a line log4php logger Cartoclient INFO means that only log message of severity INFO or above will be printed This is useful to avoid displaying unwanted log messages 9 2 3 Default Log File Location Default log messages will be written to Llog cartoclient log and the CartoServer ones to log cartoserver log Of course the Log4php configuration files can be adapted to write messages elsewhere 9 2 4 Using Log4php in Source Files The Log4php usage in code is quite easy 1 For objects it is advised to s
272. s in only one database For instance use this option if you want to import both CartoWeb and WMS logs in the same database e db connection string e logDir logs directory Directory will be recursively processed e format format Currently values are cartoweb or wms e logRegExp regular expression to limit processed file logs to those matching the expression For WMS imports you need to speficy one of those two options e mapIdRegExp regular expression that finds the project name in WMS query This allows to have several WMS application on one server with the same Apache logs e mapIdConfig filename for a ini file that contains a mapIDs section that defines what map ID to set in function of partial string matched against the WMS log entry Example for a WMS import with a regular expression java Xmx1G cp target stats standalone jar org cartoweb stats imports Import initialize tableName stats_wms db jdbc postgresql localhost MYDB user MYUSER amp password MYPASSWORD logDir my log apachedir format wms logRegexp d d d d d d d d log mapIdRegExp GET wms Example for a WMS import with a configuration file java Xmx1G cp target stats standalone jar org cartoweb stats imports Import initialize tableName stats_wms db jdbc postgresql localhost MYDB user MYUSER amp password MYPASSWORD logDir my log apachedir format wms
273. s provider where adr_street like S adr_street AND addresses parcel_ref parcels In this sample we have a search that is done on a table adresses and a table parcels where a parcel contains many adresses The search return all the streets where the name matches the name given in the form and their corresponding parcel reference 24 3 1 3 Writing a Provider 159 Search plugin Warning Documentation below is still in draft state A provider is an interface implementation that allows you to acess a type of data that is not supported by PEAR DB You have to modify the Search php In this file there is an abstract class that is named abstract class ResultProvider You have to extend this class class MyResultProvider extends ResultProvider public function getResult SearchRequest Srequest Stable New Table Stable gt tableId search Stable gt columnIds array coll Stable gt noRowId false Stable gt rows array hello world Stable gt numRows SdbResult gt numRows Generates pages information Stable gt rowsPage 1 Stable gt totalPages 1 Stable gt page 1 curent page number result new SearchResult Sresult gt table Stable return Sresult Warning Do not forget to modify the provider in the ini file You have to implements the getResult fonction It should return a Table instance 24 3 1 4 Recenter and Hilight In previou
274. s samples recentering is done afterwards by clicking on on result If you want to recenter and hilight on search results directly during the search you can add those two lines in search ini config my_config provider recenter recenter_layer config my_config provider hilight hilight_layer The two layers must exist in the mapfile They will be used in ordre to recenter on 160 Search plugin and hilight search results This option is only available for client side search configurations 24 3 1 5 Writing a Formatter Warning Documentation below is still in draft state A formatter allows you to format the result of the query Actually it returns code generated by Smarty But if you want to use an other template engine or a more specifique formatter JSON for example or in our case a smarty with differents delimiters you have to modify the clientSearch php In this file there is an abstract calss abstract class ResponseFormatter you have to extend this class Formats a response using a Smarty template with different separators see ResponseFormatter yf class MYSmartyResponseFormatter extends ResponseFormatter see ResponseFormatter getResponse Ly public function getResponse SearchResult result Ssmarty new Smarty_Plugin S this gt plugin gt getCartoclient Sthis gt plugin Ssmarty gt right_delimiter EOF Ssmarty gt left_delimiter EOF Ssma
275. s to limit the applied resolution when for instance printing big dimensioned maps For instance formats settings fFormats A4 label A4 formats A4 bigDimension 297 fFormats A4 smallDimension 210 formats A3 label A3 formats A3 bigDimension 420 formats A3 smallDimension 297 formats A3 horizontalMargin 30 formats A3 verticalMargin 30 formats A3 maxResolution 150 12 3 3 Form Settings The HTML interface of the PDF tool is fully customisable by e editing the general attributes for formats resolutions and orientation lists see Section 12 3 2 1 general above e adding or editing blocks content parameters to specify default values for text 97 PDF Export fitigiat inputs such as title or note and other options legend scalebar overview query results See Section 12 3 4 Blocks Configuration For instance blocks title content My default title blocks scalebar content 1 scalebar is checked by default blocks legend content in legend is checked as included in map by default 12 3 4 Blocks Configuration Whatever their types image text table legend north blocks use the same PHP object model and as a result the same object properties Some parameters can be used in several ways depending on the block type Some others are simply ignored Blocks naming is quite free but some names are reserved to system defined blocks such as title mainmap overview scalebar
276. server s mapquery ini e maxResults Maximum number of results to handle in the query plugin This limit is to avoid high load on the server It should be the client responsibility not to ask too many objects to avoid reaching this limit Ignoring big queries can be done with the ignoreQueryThreshold parameter which give a better behaviour for the user 67 Queries coreplugin query e ignoreQueryThreshold Do not take into account the elements selected by a shape rectangle polygon in a query if this shape intersects more than ignoreQueryThreshold objects It should be less than maxResults to have informative messages to the user 9 3 Related Elements in Mapfile 9 3 1 Making a Layer Queriable To make a MapServer layer queriable one have to add a TEMPLATE parameter in the mapfile layer definition In our case any value fits For instance LAYER NAME foobar LEMP GATE EIEE A END 9 3 2 Meta Data Here are the meta data that can be set to mapfile s layers nn e id_attribute_string nameltype describes the attribute used for the id and the type of the id Type can be either int or string Caution case sensitive e query_returned_attributes attribute1 attribute2 the names space separated of the fields returned by a query If not set all fields are returned Caution case sensitive e hilight_use_logical_expressions true false Set this to true if you are using a layer for hilight using
277. sic Setup Existing files are not overwritten 1 1 3 2 4 Cleaning Generated Files Map PDF Temporary Files and Smarty Cache lt PHP INTERPRETER gt cw3setup php clean Tip On production servers scripts clean php should be used instead of cw3setup php clean Since it is smoother Be aware however that some changes were made in cw3setup php clean that might not have been ported to clean php 1 1 3 2 5 Fetching the Demo Data 20 Installation lt PHP INTERPRETER gt cw3setup php fetch demo 1 1 3 2 6 Install or Reinstall CartoWeb from CVS and Set Up It at Once 1 1 3 2 6 1 Install lt PHP INTERPRETER gt cw3setup php install cvs root pserver anonymous dev camptocamp com var lib cvs public fetch from cvs base url http www example com cartoweb Note Do no execute this command from the cart oweb3 folder Because this will fetch the whole cartoweb3 hierarchy from cvs including the cart oweb3 folder If you executed this from the cartoweb3 folder you would end up with something like cartoweb3 cartoweb3 Instead copy the cw3setup php in the parent directory delete or backup the cartoweb3 folder and execute the command 1 1 3 2 6 2 Reinstall lt PHP INTERPRETER gt cw3setup php install cvs root pserver anonymous dev camptocamp com var lib cvs public fetch from cvs delete existing base url http www example com cartoweb Warning This command will automatically
278. ssions 68 host 116 HTML export plugin 81 l idRecenterActive 60 idRecenterLayers 60 id_attribute_string 68 ignoreQueryThreshold 68 Image blocks PDF 102 image export 85 imagetype 64 initial mapstate 39 insertedFeaturesMaxNumber 111 Internationalization I18n 130 L label 145 labelMode 72 layergroups 48 layerReorder 56 layers 47 Legend 52 Legend blocks PDF 104 lineLayer 73 locate 134 loggedIn 117 M mapHeight 63 mapld 32 mapOverlay 240 mapSizes height 63 mapSizes label 63 mapSizes width 63 mapSizesActive 63 mapSizesDefault 63 mapWidth 63 maskColor 73 mask_color 70 mask_transparency 70 maxMapHeight 63 64 maxMapWidth 63 64 maxResults 67 maxScale 61 memberattr 116 minScale 61 multipleShapes 72 N noBboxAdjusting 61 noDrawKeymap 64 noDrawScalebar 64 noRowld 67 North Arrow blocks PDF 105 O ogcLayerLoader 162 outputformat 64 outside_mask 70 Overall configuration PDF 95 P panRatio 60 PDF 87 persistentQueries 66 Plugin adaptation 222 Plugin creation 218 Plugin extension 224 Plugin overriding 223 Plugins 217 Plugins calling 219 Plugins interfaces implementations 219 Plugins structure 217 pointLayer 73 polygonLayer 73 port 116 291 Index Projects 32 Q queryLayers 66 query_returned_attributes 68 R recenterActive 60 recenterDefaultScale 62 recenterMargin 61 refLinesActive 62 refLinesFont
279. stall CartoWeb when using fetch from cvs dir options Overwrite existing directories if any Do not use symbolic links even if your operating system supports them Location of a configuration file for automatic variable replacement in in files NOTE You may either use a path relative to the target cartoweb3 directory or an absolute path config from project PROJECT Read the configuration file containing variables to replace in in files from the specified project fetch project cvs PROJECT Fetch the given project from CVS see cvs root option To fetch several projects at a time specify this option as many times as necessary fetch project svn PROJECT Fetch the given project from SVN you will need to SWid Clo ojo Homays give svn co options to specifiy the checkout command to be used To fetch several projects at a time specify this option as many times as necessary Checkout command to use for fetching project with SVN For instance username foo no auth cache checkout https myproject svn bar fetch project dir DIRECTORY Fetch the given project from a directory To project PROJECT default project PROJECT base url BASEURL profile PROFILENAME clean views fetch several projects at a time specify this ption as many times as necessary o Installation is launched only for given project To install several projects at a time specify this
280. stance loadPlugins auth outline exportHtml Since they are not always available simple plugins usually do not rely on each other On the other hand it is not a problem for them to call some coreplugins functionalities if the latter are publicly accessible Simple plugins files are grouped in the plugins directory The general philosophy is to gather all files of a given plugin in the same dedicated directory including files from both CartoClient and CartoServer sides of the plugin Thus it is easy to plug a new module in CartoWeb architecture by simply pasting it in the plugins or coreplugins parent directories Note however that plugins configuration files named lt pluginName gt ini are placed in the client_conf and or server_conf lt mapId gt depending if those plugins have CartoClient CartoServer components 2 1 3 Plugins Structure 217 New Plugins Plugins and coreplugins have the following general structure lt pluginName gt lt pluginName gt client lt pluginName gt server lt pluginName gt common lt pluginName gt templates lt pluginName gt htdocs lt pluginName gt htdocs gfx lt pluginName gt htdocs js lt pluginName gt htdocs css e client contains all specific CartoClient side PHP files e server contains all specific CartoServer side PHP files e common contains PHP files shared by both CartoClient and CartoServer sides or at least files that are not specific to on
281. sting This is correct Loe Si 0p Si Ss rH I if something Sa continue doMore 6 3 1 7 PHP Code Tags Always use lt php gt to delimit PHP code not the lt P BS shorthand 6 3 1 8 Naming Conventions 6 3 1 8 1 Classes Classes should be given descriptive names that should always begin with an uppercase letter Avoid using abbreviations 251 Code Convention 6 3 1 8 2 Functions and Methods Functions and methods should be named using the studly caps style also referred to as bumpy case or camel caps function handleKeymapTool Functions and methods names should always describe actions Developpers should declare the access modifiers public private protected for each function or method 6 3 1 8 3 Constants Constants should always be all uppercase with underscores to seperate words 6 3 2 Comments 6 3 2 1 Php Doc Comments To improve php code and object structure readability automatic code documentation is implemented in CartoWeb It is based on specific comments describing classes methods interfaces and objects See Chapter 8 Code Documentation for more information 6 3 2 2 Inline Comments As often as necessary the developers should add code comments to explain verbosly the purposes of commands 6 4 HTML Coding Standards In CartoWeb mainly for the templates HTML coding should respect some rules To take benefits of recent browsers enhancements and ab
282. t CartoWeb is based on the geographical engine Mapserver The Mapserver documentation http mapserver gis umn edu doc html http mapserver gis umn edu doc html is an integral part of the CartoWeb doc To be concise you have to know how to write a mapfile if you want to use CartoWeb So it doesn t come as a surprise that a mapfile myMap map is included in the lt myMap gt directory together with its annexes typically a symbol file myMap sym a directory etc for the required fonts the graphic file used as keymap background maybe also data files We ll see that some functionalities of CartoWeb require small changes of the mapfile content But most of the configuration is done in the file layers ini The file myMap ini sets the required plugins and the initial state of the map Its content is described in Chapter 4 Configuration Files 6 2 Hierarchy of Layers and Rendering Contrary to Mapserver itself CartoWeb supports an arbitrarily complex hierarchy of layers and different rendering options The notion of LayerGroup makes it possible 6 2 1 Layers and LayerGroups There are two types of layers like objects in layers ini Layers and LayerGroups They play fairly different roles and consequently have different possible attributes Layers have a 1 to 1 correspondance to Mapserver layers as defined in the layers map while LayerGroups group together atomic Layers or other LayerGroups 6 2 2 Layers Options 46 Laye
283. t height gt format gt scalebar gt stdClass Object isDrawn gt 1 path gt images 110839565198672 png width gt 300 height gt 31 format gt 212 Calling Plugins locationResult gt stdClass Object className gt LocationResult bbox gt stdClass Object minx gt 536770 840477 miny gt 136770 840477 maxx gt 563229 159523 maxy li gt Le3229 139523 scale gt 200000 1 4 3 Executing a Query The following code shows how to use queries to display hilighted selection and to retrieve corresponding attributes First thing to do is to declare the SOAP client Class SoapClient will need the WSDL code dynamically generated by script cartoserver wsdl php lt php Sclient new SoapClient http url to server cartoserver wsdl php mapld swiss_project swiss The map ID is required also in the request object Srequest gt maplId swiss_project swiss In this example only main map and key map are requested So scale bar s isDrawn attribute is set to false Srequest gt imagesRequest gt className ImagesRequest Srequest gt imagesRequest gt mainmap gt isDrawn true Srequest gt imagesRequest gt mainmap gt path Srequest gt imagesRequest gt mainmap gt width 500 Srequest gt imagesRequest gt mainmap gt height 500 Srequest gt imagesRequest gt mainmap gt format Srequest gt im
284. t NULL e multiPage false e parent false e inFlow true e caption empty string e headers empty string e allowedRoles all e 118n false 12 2 4 Colors definition plugin Colors definitions in exportPdf ini configuration file are done using hexadecimal color codes or a few textual aliases such as white black red green blue For instance general overviewOutlineColor red template backgroundColor white template borderColor 000000 blocks title color 0000ff 12 3 Tutorial 12 3 1 General Principle hexadecimal code for black hexadecimal code for blue The PDF document to generate is described using elementary objects blocks 94 PDF Export fpitigiih e texts titles copyrights dates e images maps logos e tables queries results e legend list of icons labels for each printed layers Those blocks are drawn and positioned on the document pages according to properties detailed in each block In addition some data must be specified to describe the general document characteristics such as formats pages size orientation available resolutions PDF engine and more Parameters containing several values are represented using comma separated lists of strings integers If some values contain special characters such as accentuated letters quotes or other exclamation marks it may be wiser to encapsulate the whole parameter value between double quotes Warning
285. t from MapServer gt 4 4 See http www maptools org php_mapscript for more information and installation instructions Note If you are using Debian and you need to install MapServer you can have a look at Appendix A Mapserver Debian Installation Note If you are using Windows simply use the Windows Installer Section 1 1 2 CartoWeb Download If you absolutely want to install MapServer manually see Appendix B Apache amp Mapserver Windows Manual Installation PostgreSQL with PostGIS Support Optional If you want spatial database support in CartoWeb you will need to install PostGIS of the PostgreSQL database See http postgis refractions net for more information 1 1 2 CartoWeb Download There are two ways to get CartoWeb 1 Complete package from the official website o Download CartoWeb package from http cartoweb org downloads html It is recommended that you download the version with demo for a better user experience o Uncompress the archive somewhere in your path accessible by your web server 2 From CVS Get the current development version via CVS using the following 17 Installation command cvs d pserver anonymous dev camptocamp com var lib cvs public co cartoweb3 From CVS with cw3setup php If you already have the cw3setup php file which comes along the CartoWeb package or CVS source you can fetch CartoWeb from CVS and set up it at once See Section 1 1 3 2 6 Install o
286. t getExportResult this gt getConfiguration EE 6 Soutput new ExportOutput Soutput gt setContents S contents return Soutput Final output headers content is done in method output For instance public Punckion wuteut header Content Type text html print S this gt getExport gt getContents return Use 2 4 2 Filters Filter plugins can be used to modify parameters transfered from browser to CartoWeb client These parameters can be part of a POST request HTML forms or a GET request URL query string Once a new filter plugin has been developed it can be activated by adding it to the loadPlugins variable in file client_conf client ini 2 4 2 1 Interface and Classes Interface FilterProvider declares following methods e filterPostRequest FilterRequestModifier request modifies parameters transfered via a POST request e filterGetRequest FilterRequestModifier request modifies parameters transfered via a GET request Class FilterRequestModi fier is used to get old values from the request and set new ones It implements two main methods e getValue key retrieves old value e setValue key value sets new value 229 New Plugins 2 4 2 2 Available Parameters This is the list of global parameters accepted by CartoWeb via GET e reset_session This will reset all session parameters to default value Useful when you want to go back to the initial stats of the
287. t ini and plugins configuration files e core plugins client php e core plugins common php e core plugins server php e core plugins htdocs php e core plugins templates tpl e htdocs css css htdocs js js e htdocs gfx layout gif e server_conf server ini e server_conf lt mapId gt ini lt maplId gt ini and plugins configuration files e templates tpl 32 Projects Handling You can add project specific mapfiles in directory projects my_project server_conf my_mapfile To point to the new mapfile change the maplId value in projects my_project client_conf client ini You can add project specific plugins in directory projects my_project plugins To load the new plugin add its name in client ini and or my_mapfile ini loadPlugins variable Note You MUST execute the cw3setup script with option install so the new overriding files are linked linux copied windows in the main htdocs folder see Section 1 1 3 Command Line Installation for details 3 2 Using Projects There are several ways to tell CartoWeb what project to use 3 2 1 Apache Environment Variable Set environment variable CW3_PROJECT in Apache configuration lt Directory your cartoclient path gt Options FollowSymLinks Action php script cgi bin php5 AddHandler php script php Ea e SetEnv CW3_PROJECT your_project_name lt Directory gt Warning You will need Apache s Env
288. t p gt t l one 2 two 3 three The lst parameter is 1 the 2nd is 2 and the 3nd 3 t lt p gt It is also possible to use the Itr smarty modifier if you want to apply some Smarty transformations on a translated string assign var label value Themes lt div if label tr count_characters true lt 10 style width 72px if gt Slabel tr lt div gt See also Chapter 17 Internationalization 18 3 Resources Resources are identified using the r tag r tags have a mandatory type attribute and an optional plugin one First attribute is used to indicate the relative file location files are grouped by types in the file system whereas the second one tells what plugin uses the resource Filename is placed between opening and closing tags For instance to get the logo png file located in htdocs gfx layout type in your template lt img srce r type gfx layout logo png r alt gt 130 Templating To get the zoom in icons from the location plugin type lt img src r type gfx plugin location zoom_in gif r alt gt Following list shows all CartoWeb resource types e Htdocs root directory o path htdocs css toto css o Smarty r type css toto css r o generated URL css toto css e Coreplugins o path coreplugins layers htdocs css toto css o Smarty r type css plugin layers toto css r o generated URL layers css toto css e Plugins o path plugins hello htdocs css toto css o Smarty
289. ta source such as text files or databases using following syntaxes Connection parts are separated by a First part indicates what medium filelab is used e file file source blocks myText content file my source file path The source file path can either be a absolute URL or a filesystem path Relative filesystem paths are allowed and are based on the CartoWeb root path For instance blocks myText content file http myserver mysourcefile txt blocks myText content file C mydir mysourcefile txt blocks myText content file home johndoe mysourcefile txt blocks myText content file www data mysourcefile txt If your source file contains several lines or n strings the generated block will also be multilined e db database source blocks myText content db DSN SQL query The DSN Data Source Name gives the database connection parameters Any DSN format supported by PEAR DB can be used See PEAR DB manual for more info about DSNs at http pear php net manual en package database db intro dsn php Note that you can call any database server type as long as it is supported by PEAR DB and that your PHP distribution has the matching extension enabled For security reasons only SELECT SQL queries are allowed but there is no other limitation On the other hand the query results are basically rendered using a new line for each result line and simply separating result elements with blank spaces For instance 10
290. table_id array LOU tartay tentum iL Sf tratue il Ow al Nello 2 Vyeulne 2 row 1 WAL SS array 237 New Plugins tenham il Ss Wverlline il seony 2 column_2 gt value_2_row_2 return array O gt array new_column_1 gt cell_value_l_row_1 new_column_2 gt cell_value_2_row_1 DIL eliciceyy new_column_1 gt cell_value_l_row_2 new_column_2 gt cell_value_2_row_2 See Section 2 4 3 2 10 ColumnAdder to know more about parameter ScolumnPosition 2 4 3 2 12 Column reorder public function addColumnReorder groupiId StableId columnIds Column reorder rule allow you to reorder the columns and their contents Parameter columnIds should contain an array of column IDs given the new column s order Note that all the IDs must appear in columnIds even they don t move 2 4 3 3 Precedence of Rules Depending on rule type rules are set for a group a table or a column Parameters S groupId tableId or columnId can point to one object or to a group of object using wildcard e column_1 rule will be executed on columns called column_1 only e col rule will be executed on columns with name starting with col e rule will be executed on any columns For instance following rule may be executed on groups with name starting with myGr tables called myTable and all columns Sregistry gt addColumnFilter myGr myTable arr
291. tandard Structures 1 1 1 Simple Types These types are used in different other structures lt complexType name ArrayOfString gt lt complexContent gt lt restriction base encll Array gt lt attribute ref encll arrayType wsdl arrayType xsd string gt lt restriction gt lt complexContent gt lt complexType gt e array list of character strings lt complexType name Dimension gt 184 Calling Plugins lt all gt lt element name width type xsd int gt lt element name height type xsd int gt arean lt complexType gt e width width in pixels e height height in pixels lt complexType name GeoDimension gt lt all gt lt element name dimension type types Dimension gt lt element name bbox type types Bbox gt lt all gt lt complexType gt e dimension dimensions in pixels e bbox bounding box see Section 1 1 2 Shapes for a description of type Bbox 1 1 2 Shapes These types define a hierarchy of shapes As heritage and polymorphism cannot be used type Shape includes all attibutes of its children types lt complexType name Bbox gt lt all gt lt element name minx type xsd double gt lt element name miny type xsd double gt lt element name maxx type xsd double gt lt element name maxy type xsd double gt lt all gt lt complexType gt e minx minimum x coordinate e miny minimum y coordinate e maxx maximum x
292. templates layers tpl projects lt yourProjectName gt coreplugins layers htdocs projects lt yourProjectName gt coreplugins layers htdocs js projects lt yourProjectName gt coreplugins layers htdocs js layers js If you don t need to override the CSS file it is no use to create a css directory containing a copy of the upstream layers css If you want to neutralize a file you can simply override it with a blank version For instance to have a void output create a template file with no content 223 New Plugins It is also possible to override the plugin configuration files by adding lt pluginName gt ini files in the project configuration directories client_conf and or server_conf lt mapId gt When the plugin is launched upstream and project configuration files are merged so you don t need to duplicate the configuration parameters that stay unchanged with your adapted plugin 2 3 3 Extending a Plugin Extending a plugin is required when your adaptations involve deep changes such as additions or overloadings of methods in the plugin PHP classes To do so you will have to extend the plugin PHP classes in the object oriented programing definition Since plugin main classes are named using a plugin name based convention eg ClientLayers and ServerLayers for the CartoClient and CartoServer main classes of the layers coreplugin and since extended classes cannot have the same name than their parent class you will have to rena
293. the extensions folder of PHP see PHPINFO default is c wamp php ext The file php_proj d11 is outdated you can ignore it o Open php ini and add a call to this extension extension php_mapscript_45 dll 281 Apache amp Mapserver Windows Manual Installation e Restart Apache and check that the mapscript module is loaded correctly look in PHPINFO e Install Proj4 by following the instructions in URL indicated in the README txt http mapserver gis umn edu cgi bin wiki pl WindowProjHowTo gt Using Prebuilt Binaries o Download the archive Proj4 here ftp ftp remotesensing org proj proj446_win32_bin zip o Uncompress it in C If you want to install it elsewhere look at point 2 of Using Prebuilt Binaries o Point 3 in the README is irrelevant in our case e CartoWeb setup script cw3setup php requires an unzip program to uncompress libraries and demo data archives If you don t have one installed download one on the Web type unzip exe in your favorite search engine and put it for instance in your C Windows directory Note The exe in the Mapserver archive are not needed Note If you are using Windows XP it may be necessary to modify the extension_dir value in php ini by using instead of 282 Create a New Project Appendix C Create a New Project This appendix describes how to configure your own project The main steps are detailed here C 1 Project Directory Get in the p
294. the module by adding the following two lines in php ini zend_extension lt php_home gt 1lib php extensions no debug non zts 20040412 apd so apd dumpdir tmp apd On a win32 installation 270 Performance Tests zend_extension_debug_ts lt php_lib_home gt apd dll apd dumpdir c apd traces Path to apd so may vary See also README file in APD archive You may now activate tracing by adding an empty file trace apd in directories lt cartoweb_home gt client and lt cartow b_home gt server touch trace apd When using Cartoweb in direct mode only one trace file will be generated When using Cartoweb in SOAP mode two trace files will be generated one for client and one for server These files can be found in directory set in apd dumpdir variable php ini see above 10 2 2 Simple Execution Times To get global execution times use script cwprof php e First usage execute script on each trace file This could be useful to re parse an old trace file If you have separated trace files for client and server you will need to execute the script twice cd lt cartoweb_home gt scripts php cwprof php lt trace_file gt e Second usage execute script on a directory The script will parse the most recent trace file The 1oca1 option is used when client and server trace files are located in same directory In this case the two most recent trace files are parsed and results for client and server are
295. ting plugins is separated into two tasks 1 Locally testing client common or server classes For plugin client classes it requires a CartoClient environment available and identically a CartoServer environment for testing server classes 2 Remote plugin tests throught the webservice API This kind of tests are related to the server plugins that s why we chose to put them in the server folder of plugins For the first point mentionned above general Unit tests rules apply as described in Section 7 2 1 General Information About Writing Tests For the second point stated a help class named client_CartoserverServiceTest can be extended by the testing classes In turn client_CartoserverServiceTest extends other classes which offer additional helpful methods For the complete list of available methods please have a look at the generate API docs as more may be added in future The main useful methods are createRequest for initializing a new request getMap for lanching the request Tip 260 Unit Tests Having a look at an existing plugin test case is the best starting point for writing new tests 7 2 2 3 Tests for projects Each CartoWeb project can have its set of tests directly inside the project in a directory tests Inside this directory you have to use the same hierarchy as in the main tests directory Inside these tests directories the same mechanism is used for testing as the main t
296. tion This plugin allows user to search features by their names and recenter on them By typing the first letters of a name user is given a list of corresponding names Clicking on one of them recenters the map on it Note In the locate ini you also need to specify the layers on which you want to do a search by name and the sql statements to request the database Tip Ensure that the tables have the correct privileges GRANT SELECT in the database 1 2 5 ToolTips demo specific installation Tip The database used to store data is the same as for the demoPlugins Create the tables for layers radio and gsm Note To do so convert the radio and gsm data from shapefile to postGIS tables The shapefiles should be available in project s demoCW3 server_conf demoCw3 27 Installation data where all demos data are shp2pgsql L radiovshp radio gt inmp radico sql S psql d demo_plugins f tmp radio sql S shp2pgsql I gsm shp gsm gt tmp gsm sql S psql d demo_plugins f tmp gsm sql e Create the table for channel data psql d demo_plugins f channels sql The channels sql is located in the projects demoToolTips server_conf demoToolTips sql folder e Launch the install script in your CartoWeb root directory php cw3setup php install base url lt base url gt profile development project demoToolTips config from file projects demoPlugins demo properties
297. tore a Logger object as an instance variable class MyClass var Logger A private Slog Pesti AG Onisi Ul Gieors ef pubis eo uineet eenst ruck Te Sthis gt log amp LoggerManager getLogger __CLASS___ eres parent r CONSE GUC CIS For non object a reference to a Logger object can be obtained this way Slog amp LoggerManager getLogger __METHOD__ Tip Using __METHOD__ allows the same line to be used independently of the method where it is located 2 On the Logger object several methods can be used to log messages debug info warn error fatal They take a string as argument which is the message to log Example 267 Logging and Debugging Sthis gt log gt debug My Message Inside objects Slog gt warn My Message Outside objects 9 3 Debugging Debugging is a large topic Everyone has its preference over the tool to be used like using an integrated debugging tool inside an IDE using print statements code printing and reading Because of this this section does not tells what tools to use but rather gives some tips when debugging 9 3 1 Understanding Exceptions and Stack Traces When a failure is encountered in CartoWeb the Php5 mechanism for exceptions handling is used to manage exception and display stack traces People knowing the Java language will be familiar with such stack traces The following example shows such a stack t
298. tructure 4 Using the Security Infrastructure 4 1 Introduction This chapter describes the security infrastructure from the developer point of view For general details about security and its configuration see Chapter 15 Security Configuration The security management in cartoweb is separated in the following parts e Management of the user password roles database SecurityContainer class in common SecurityManager php e Management of user authentication calling checkUser and setUser setUserAndRoles in SecurityManager e Granting access to objects based on the current roles 4 2 Plugins Managing Security Database and Authentication Point 1 and 2 in the previous section are the responsibility of specific plugins For an example see the auth plugin 4 3 Plugins Granting or Denying Access to Objects Features in CartoWeb This point is the most important for plugin developers wanting to use the CartoWeb security mechanisms to allow or deny an access to a feature object The plugin can call the method hasRole roles on the current security manager For an example let s take the pdf plugin which has to restrict printing some formats only to allowed users in the ini file we could have formats A4 allowedRoles printers admin In the plugin we can then check the permissions with in the routine building the available format list 244 Using the Security Infrastructure foreach formats as f
299. ts For more details on how to configure those parameters see Chapter 7 Navigation edecpnusnnibeaiion Click on the reset_session button in your browser page New elements should appear You should be able to choose a scale and a shortcut C 6 Your Own Data After that the next point is to add your own data You should just have to e get your data available by default in the data folder or somewhere else on your filesystem e modify the mapfile extent e modify the extent defined in the initialMapstates your_project_name ini e add layers definitions in the mapfile your_project_name map e add layers definitions in the layers ini e reset the session in the browser and get your data displayed C 7 Outline Let s see how to load a plugin Edit the client ini in file client_conf and add the outline plugin in the list of plugins to load loadPlugins outline Do the same in the your_project_name ini file on server side server_conf your_project_name but also add the mapOverLay plugin mapInfo loadPlugins outline mapOverlay Move the outline ini file from sampleFiles to server_conf your_project_name In the mapfile your_project_name map add the following at the bottom of the layers definition section LAYER NAME cartoweb_point_outline WNG2 ID JEXOVILN IL CLASS 285 Create a New Project STYLE SYMBOL circle COLOR 0 0 205 SAn RO END LABEL TYPE TRUETYPE FONT Vera SE
300. typed They deal with block presentation color size content etc and positioning Blocks are basic entities of the PDF document text images For instance overview mainmap scalebar title are described with block objects To factorize blocks description it is possible to describe a template block object that defines the default configuration of blocks Those default settings are then overriden by each block specific description e general guiMode string type of GUI used Must be either classic default or rotate rotate mode adds the possibility to rotate the map to be printed directly on screen e general formats comma separated list of strings ids of available sheet sizes Must match format objects names see Formats configuration below 87 PDF Export fpitigidt general defaultFormat string default selected used format Must be one of the above list items general resolutions comma separated list of integers list of available resolutions in dot per inch dpi To have legend icons generated in same resolutions you must configure resolutions in plugin Layers see Section 6 4 Layers Legends general defaultResolution integer default selected used resolution Must be one of the above list items general scales comma separated list of integers list of available printing scales 1000 should be read 1 1000 Used only when guiMode is rotate general defaultScale integer defau
301. ugin extends ClientPlugin implements GuiProvider ServerCaller public function initializeResult S myPluginResult Retrieves message Sthis gt message myPluginResult gt message public function renderForm Smarty S smarty Translation and display Ssmarty gt assign message 118n gt Sthis gt message Example for use of 118n gt functions server side Sif class ServerMyPlugin extends ClientResponderAdapter 246 Internationalization Hy public function handlePreDrawing Srequest SmyPluginResult new MyPluginResult Message must be translated but not now SmyPluginResult gt message I18nNoop gt hello world return S myPluginResult In this example message sent by server has to be translated But as translation process is always done on client we only indicates to the script that there is a text to add to the translation template 5 2 Character Set Encoding As already described in Section 17 2 Character Set Encoding Configuration character set encoding is done using Encoder set of classes It uses functions Encoder encode and Encoder decode e Encoder encode text context converts text from context s character set to CartoWeb s internal character set UTF 8 e Encoder decode text context converts text from CartoWeb s internal character set UTF 8 to context s character Context can be
302. uld be floors each floor must be displayed with the same color etc but the data source is different different shapefile or different where clause for a database layer In CartoWeb it is possible to add PHP code into mapfiles True 53 Layers coreplugin mapfiles are then generated by a batch script The generated layers are called Auto Layers 6 6 1 Auto Layers in layers ini First you have to declare the list of auto layers indexes Indexes will be used as suffixes for generated layers autoLayersIndexes indexl index2 Then you can use auto layers just as other layers In this exemple an auto layer myAutoLayer_ was declared in the mapfile template see Section 6 6 2 Mapfile Templates layers layerl className LayerGroup layers layerl children layer2 myAutoLayer_indexl layers layer2 className LayerGroup layers layer2 children myAutoLayer_index2 6 6 2 Mapfile Templates Mapfile templates for auto layers are PHP files The main template must be called mapiId map php If this file exists then CartoWeb assumes that auto layers generation is used If the file does not exists CartoWeb looks for a standard mapid map The following functions are predefined and can be used in mapfile templates e printLayer name contents adds a new auto layer The name is the final name of the layer without the index suffix Contents include Mapserver layer definition with PHP code for parts that will be
303. user accessing CartoWeb If the user is not logged in she is rerefenced as the anonymous user Role A user can have zero or more roles associated to her These roles are used to allow or deny a permission to a resource of feature Permissions Permissions describe parts of the application which can be allowed or denied access A permission can have roles for which access is allowed and roles for which it is denied 15 2 Auth Plugin The security system in CartoWeb was developped to be modular and to allow different authentications systems to be easily plugged in This section describes one implementation of authentication user password and roles management which is the auth plugin shipped with CartoWeb Cartoclient Title Login dialog Please enter your login and password Username Password Submit Click here to go back to the map 114 Security Configuration The auth plugin is not a core plugin That s why you need to enable it if you want to enable users to log in See Chapter 4 Configuration Files how to enable it in the list of plugins If it is not activated the login dialog won t be available so users will remain anonymous The next section describes the configuration file of the auth plugin It is basically the management of usernames passwords and roles 15 2 1 auth ini Client side The auth ini configuration is located in the client This file contains the list of usernames their password and the
304. web3 on Windows using WAMP Mapscript and Cartoweb The following configuration was tested e Windows 2000 WAMP 1 4 4 Apache 1 3 33 PHP 5 0 4 e Mapserver 4 5 e Cartoweb 3 0 0 and Cartoweb3 CVS version B 1 Apache PHP5 Install Cartoweb requires php5 MS4W only supports php4 3 so we will need WAMP 1 4 4 or greater You can get the installation package here http www wampserver com download php Launch the setup by clicking on the executable file you just downloaded here wamp5_1 4 4 exe Keep default install options e Install WAMP in c wamp e Set www root folder as c wamp www Once installation is completed If WAMP didn t loaded automatically icon in the system tray in the lower right of the screen load it Stat menu Programs WampServer Start Wampserver Type http localhost in a browser e Once the page has loaded click on Tools gt phpinfo http localhost exemples phpinfo php to display the complete PHPINFO information e Take note of the path to the php ini file Configuration File php ini Path It should look like c wamp apache php ini e Open the file php ini in any text editor and go to the Dynamic Extensions section Activate the SOAP Curl and Gettext extensions Simply remove the at the beginning of the lines 280 Apache amp Mapserver Windows Manual Installation If you can not see the extension in the list you will need to add it manually extension php_soap
305. will set the css property background image of a div in the template accordingly to the symbol picked The id of the div is based on the output element id if it specified if not the input element id is used to which a _d is added Example if the input element id is return_symbol_12 the id of the div used to display the symbol will be return_symbol_12_d The SymbolPicker is used with CartoWeb outline plugin usually but it also can be used without the plugin 10 5 3 2 1 Within the Outline Plugin In CartoWeb server_conf yourprojectname outline ini file defines a list of symbols to use For each kind of symbols you want to use pointSymbols circle square star anyothersymbol All these symbol names MUST BE defined in the sym file in server_conf yourprojectname If you want to add language support for the symbol name add the following 77 Annotation and Redlining ipiugini outlines parameter in server_conf yourprojectname outline ini pointSymbols labels symbolnamel symbolname2 anyothername These names will be used to translate into the chosen language using the gettext functionnality Add the corresponding translations in the server po files 10 5 3 2 2 Without the Outline Plugin Standalone Use If you do not use the outline plugin you will need to set the following javaScript variable somewhere in your page lt script type text javascript gt fr al COAT AL AY var imgPath
306. with the following signature static function myCallbackMethod table_id column_id array O gt array Keoullivinna TE Ss Wyerllines il seo iry teotumni 24 gt tya alue 2 row 1 VIL Ss array Teniamo TE Sf Wyerlline il seo 2 tectum 2t gt tyalue 2 row 2 return array 0 gt cell_value_row_1 1 gt cell_value_row_2 2 4 3 2 8 Row Unselector public function addRowUnselector S grouplId Stableld Scolumnid Srowlds Row unselector rules allow to remove some rows from a table Parameter rowIds contains IDs of row that must be removed 2 4 3 2 9 Row Selector public function addRowSelector S groupId tableld Scolumnid Srowlds Row selector rules allow to keep only some rows from a table Parameter rowIds contains IDs of row that must be kept 2 4 3 2 10 ColumnAdder public function addColumnAdder S groupid S tableld ScolumnPosition newColumnIds SinputColumniIds callback Column adder rules allow to add one or more columns to the table Parameter newColumnIds should contain the list of new column IDs Values of columns given in parameter input ColumnIds will be transfered to the callback method for cell content calculation Parameter caliback should contain a pointer to a callback method with the following signature 236 New Plugins static function myCallbackMethod table_id ciugo Wean 1 SS Menlo i Veolia 2Y velua 2 return array new_column_1
307. wo tables with same column name or if you want to migrate from one set of tables to another with different column names The config Adresses provider id designate the unique value used for recentering For example if you want to do a recenter by id gid in our case the id value should be set to gid Do not forget the id attribute srting in the mapFile see Map file 150 Search plugin references http mapserver gis umn edu docs reference mapfile layer The config Adresses provider columns specifies the columns to be returned by the query It contains the columns names separated by a coma The config Adresses provider fulltextColumns specifies the columns to be use in the ilike clause when the config Adresses provider type is fulltextColumns It contains the columns names separated by a coma Caution This parameter should not be use if the type is Table The config Adresses provider sortColumn specifies the columns to by used for ordering the rows The config Adresses provider sortDirection give the ordre type It value can be asc or desc for ascendent or descendent The config Adresses formatter type specifies the method for presenting the result s Actually only smarty is implemented But it is possible to write your own Formatter see chapter Writing a Formatter The config Adresses formatter template specifies the name of the template for formatting query results The file must be in the template folder of the plug
308. y APD to a file in KCachegrind format To translate a pprof file type pprof2calltree f lt pprof_file gt gt dev null Redirecting to dev nu11 is needed because script generates a large number of PHP notices Then you can open the resulting file in KCachegrind 212 Upgrading Views Data 11 Upgrading Views Data 11 1 Introduction Views saves given CartoWeb states by recording the plugins session data Only client side plugins implementing Sessionable interface may be saved in views Because CartoWeb and its plugins evolve views might become outdated after some time Plugin session containers may change properties may be added removed renamed etc and thus shifts between old views and new plugin session formats appear Those shifts then prevent some views from correctly displaying or even make CartoWeb crash However CartoWeb offers upgrade tools to read outdated views 11 2 Upgrade Tools 11 2 1 Views Versions Plugins session data are saved in views in separated XML elements Each element records the plugin session container version Plugin session container version must be incremented whenever a change is applied on the container format new property name change etc Container version if not specified defaults to 1 To explicitely update it add following constant definition before container declaration define PLUGINNAME_SESSION_VERSION 3 where PLUGINNAME is the uppercased plugin name Container ve
309. yer defines the name of the mapserver LAYER set in the mapfile to display points e lineLayer defines the name of the mapserver LAYER set in the mapfile to display lines e polygonLayer defines the name of the mapserver LAYER set in the mapfile to display polygons Note that rectangles are displayed as polygons e maskColor defines the RGB color of the mask This color is used to fill the polygons outside s area Drawn polys will appear as holes in a colored sheet showing the map under This parameter is optional and set by default to 255 255 255 white e areaFactor defines an optional value for ratio by which the area is multiplied before it is returned to the client For example people can use it to convert square meters to square kilometers e areaPrecision defines an optional way to obtain a formatted area surface value int nb decimal str decimal separator str thousand separator If areaPrecision is present in outline ini server_conf without any parameters the following formatter will be apply 2 decimal dot as decimal separator space as thousand separator which correspond to the areaPrecision 2 It s better to double quote your parameter avoiding trouble by the ini parser if you want to use a space at the end If you want a 4 decimal with comma decimal separator and single quote for thousand separator you would change this to areaPrecision 4 Note this is absolutely not locale
310. you will need to launch scripts on server and on client Templates are generated in directory lt cartoweb_home gt projects lt project_name gt po If translation files see Section 17 1 3 Translating already exist a merge is done using msgmerge http www gnu org software gettext manual html_chapter gettext_6 html SEC37 command Follow these steps 124 Internationalization e generate project and mapfile templates on server cd lt cartoweb_home gt scripts php server2pot php For each mapfile two templates will be generated server po and server lt mapfile_name gt po e generate project template on client cd lt cartoweb_home gt scripts php client2pot php For each project one template will be generated client po It is possible to specify for which project you want to generate the po file Simply add the project name as a parameter when launching the scripts client2pot and server2pot php server2pot php myprojectname If you do not specify a project name the po files will be generated for all projects 17 1 3 Translating As for any gettext system translating PO files can be done in Emacs in Poedit http poedit sourceforge net or in any text editor Translated PO files must be saved under name lt template_name gt lt lang gt po where lt lang gt is the 2 letters ISO language en fr de etc For instance the mapfile test of test_main project will have three PO files in its PO dire

Download Pdf Manuals

image

Related Search

Related Contents

Panasonic FP0 Thermocouple Manual  User manual M3  tract 2013 super menteur  5604-0291 簡易式ロフト・ライ調整器 取扱説明書  Operators Manual 914 Series Rev. 3 09/2004 - Contrails  Agisoft PhotoScan User Manual - Professional Edition, Version 0.9.1  双針圧力計  Format.zip -IT - Certificazione Energetica  Philips EcoClassic Lustre lamp Halogen lustre bulb 872790093179200  MANUEL D`INSTALLATION  

Copyright © All rights reserved.
Failed to retrieve file