Proposals_Catalogue - mapfish/mapfish GitHub Wiki
|| Date || 2008/08/11 || || Contact(s) || Francois || || Last edited || Timestamp || || Status || on going || || Assigned to release || to be determined || || Resources || Available ||
##. Overview
The improvement proposal aim is to have client side application for metadata catalogue. This client should support:
- GeoNetwork opensource metadata catalogue
- (optionnaly) any CSW 2.0.2 compliant metadata catalogues
2 kind of architecture is planned :
- MapFish Emebedded in GeoNetwork : make MapFish the map interface of the application. In that situation, MapFish is embedded in the catalogue and will be used to interact with search results and WMS described in metadata record.
- CSW JS Client : make a widget to add a layer described in a metadata catalogue
- Click the "add layer" button
- Open a simple search form with criteria
- Run the search (GetRecords) in the CSW service (using criteria and optionnaly current map extent)
- Display the results in the result pannel and the bbox on the map
- Allow users to add the WMS to the current map.
CSW JS Client could be a module to be used as an example in MapFish and will allow MapFish to interact with a catalogue (easier to embedded in existing web page). MapFish embedded will be a demonstration of the use of MapFish in a metadata catalogue application.
###. Proposal Type
- Type: Widgets, Core Change
- App: Client
- Module: ...
###. Links
-
Documents:
- Catalogue interface example: http://www.fao.org/geonetwork/
- CSW Specification http://portal.opengeospatial.org/files/?artifact_id=21460
- Email discussions:
- Other wiki discussions:
##. Motivations
- Improve SDI based on MapFish project
- Make metadata catalague and webmapping applications talking to each other
##. Proposal
4 main widgets defined:
- search criteria panel: allow user to define search criteria. Search criteria could be free text input, list of values, date (calendar), time range, geographic elements.
- results panel : present metadata records found. Allow access to the full metadata description and other actions : editing, rating, interactive map, download option. Paging is used and search results could be sort by specific criteria (e.g. title, last date of update) or exported (e.g. pdf, MEF) ...
- map results panel : display metadata records extent (boundingbox or boundingpolygon) as defined in the metadata. If metadata describe a WMS, this WMS could be added to the map.
- narrow your search : present summary information about the search and allow user to quickly define new search criteria to narrow current search.
###. Metadata core object A metadata object is defined in core module (mainly based on the outputSchema="http://www.opengis.net/cat/csw/2.0.2" and outputFormat="brief|summary|full").
Metadata object properties:
- title
- abstract
- keywords
- last update
- links (http, ftp, wms, wfs, ...)
- hierarchyLevelName
- (internal GeoNetwork) score
- (internal GeoNetwork) rating
- (internal GeoNetwork) popularity
- (internal GeoNetwork) children
- (internal GeoNetwork) valid
Questions:
- Is there a need to map all iso19139 properties (more than 300) ? Or only results information.
- How to store specific geonetwork field ? Create a full results set + internal GeoNetwork fields ?
###. Client / server protocol
- CSW based on XML.
- XML is parsed on the client side and a template mechanism allow search results to be displayed (mainly done manually as Ext.js does not provide a way to parse XML with namespace).
###. Widget
####. search criteria panel
Search criteria match CSW and INSPIRE search criteria (see p46 CSW spec)
=####. Search criteria= List of search criteria and CSW filter examples:
- What / Fulltext search
<csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" service="CSW" version="2.0.2" resultType="results" maxRecords="2">
csw:Query
<csw:[[ElementSetName]]>full</csw:[[ElementSetName]]>
<csw:Constraint version="1.1.0">
<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
<[[PropertyIsLike]] wildCard="%" singleChar="_" escape="\">
<[[PropertyName]]>[[AnyText]]</PropertyName>
<Literal>africa%</Literal>
</Property[[IsLike]]>
</Filter>
</csw:Constraint>
</csw:Query>
</csw:GetRecords>
- Title: <PropertyName>title
- Abstract:
<PropertyName>abstract Major%
- Keywords
<PropertyName>subject Brazil
- Contact / TODO
- Organisation
<PropertyName>OrganisationName FAO
- Template / TODO / GeoNetwork does not allow template search using CSW for now
- Format
<PropertyName>format %ESRI%
<PropertyIsLike wildCard="%" singleChar="_" escape="\"> <PropertyName>AnyText %a% <PropertyName>ows:BoundingBox -180 -90 180 90TODO : geographic search with relation
- Type
Criteria which could be list from server:
- themekey
- groups
- geoId : list of Communes, Countries, Cantons, ...
- siteId
Search Options:
- sortOrder
- hitsPerPage
- similarity
- format
Search criteria are mapped to an FE constraint using OL API.
####. results panel Results layout based on ext.js template mechanism.
A link allow to display metadata description in an ext popup windows (this link points to an HTML page of the metadata record). A link to the GetRecordById allow user to download an XML document of the metadata record.
-
Actions for all CSW compliant metadata catalogue:
- Download as XML : Allow to download XML document in ISO format : http://localhost:8080/geonetwork/srv/en/csw?request=GetRecordById&service=CSW&version=2.0.2&elementSetName=full&outputSchema=http://www.isotc211.org/2005/gmd&id=23f5132e-142c-41cc-b1dd-896be9bcb56b
-
Actions for GeoNetwork metadata catalogue:
- View in ext.js popup : Display full metadata record in HTML format : http://localhost:8080/geonetwork/srv/en/metadata.show.embedded?uuid=23f5132e-142c-41cc-b1dd-896be9bcb56b
- Rating : http://localhost:8080/geonetwork/srv/en/xml.metadata.rate
- Editing : http://localhost:8080/geonetwork/srv/en/metadata.edit?id=10
- Delete : http://localhost:8080/geonetwork/srv/en/metadata.delete?id=10
- Privileges : http://localhost:8080/geonetwork/srv/en/metadata.admin.form?id=10
- Duplicate : http://localhost:8080/geonetwork/srv/en/metadata.duplicate.form?id=10
- Select
Result widget functionnalities:
- global results options
- print action: print results as pdf (server side service)
- paging
- sort results by title, relevance, popularity, last update)
- (optional) view mode (short / full)
- metadata options
- view metadata: send an ajax call to server side for full metadata view
- on mouseOver, highlight map extent on MapComponent
- on Link (type WMS) click, add WMS layers to interactive map (later support for WFS)
- on Link (type FTP, HTTP) click, goto action
- metadata rating: send an ajax call to server side to update rating info
- (if login) delete / duplicate / edit
- (if login) privileges
- export action
- selection manager using checkbox (select all / none action)
- (if login) massivedelete action: delete all selected metadata
- export action: export all selected metadata
####. map results panel
Map widget functionnalities:
- navigation
- add wms layer
- (to be defined) on mouseOver highligth result(s) in results widget
- (to be defined) cluster strategy if more than one record with same bbox ? how to improve display of a large set of bboxes on the map
[200px)]]([Image(mapfish-client-bbox-mess.JPG,)
####. narrow your search (GeoNetwork only)
Narrow your search action could be triggered after a first search action. Optionnaly, on catalogue load a full catalog search could be run and narrow your search could present a summary for the full metadata records.
Narrow your search panel layouts:
- tagcloud viewer
- simple viewer
See existing summary header section of GeoNetwork xml.search:
Check where to store this in a CSW response.
Example of narrow your seach panel in list mode: [200px)]]([Image(mapfish-catclient-NarrowPanelListMode.png,)
####. Widget discussion [800px)]]([Image(mapfish-catclient-searchAction.png,)
[800px)]]([Image(mapfish-catclient-NarrowAction.png,)
###. Questions
- How to include these widget into an existing catalogue project ? (All MapFish, or only config file and MapFish.js)
- Any licence issue ?
- GetCapabilities : proxy & cross domain issue
- print module / to be tested
- should support vector layer bbox printing
- send map by email
###. Backwards Compatibility Issues
##. Risks
##. Participants
- patrick
- francois