SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Geo-referencing content types in Plone with
collective.geo




               Where is my
                  content?
Who am I?
I'm senior developer and project manager with Abstract since 2011

I have been working with Plone since 2007

During the last years I have gained experience with various Python web
development frameworks




                                                                                     Abstract
                                            Where is my content? — Giorgio Borelli
Web maps: when, why and how
1. Complex and specialized GIS application
2. Maps are the central part of the app
      Panoramio
       Foursquare
       Only-apartments

3. Geo-referenced CMS




                                                                                   Abstract
                                          Where is my content? — Giorgio Borelli
What is collective.geo
collective.geo is a package that allows to geo-reference contents and to
display them on a map

http://plone.org/products/collective.geo


In 2008 I faced two problems

    learning Plone 3 and the Zope component architecture
    put a lot of contents on a map




                                                                                     Abstract
                                            Where is my content? — Giorgio Borelli
What if c.geo was not there
Plone products                             Cons
  Products.Maps           1. specific for Archetypes
  Products.ATGoogleMaps   2. can only georeference points
  redturtle.maps.core     3. can only use Google Maps
  raptus.article.map      4. developed for a specific project




                                                                        Abstract
                               Where is my content? — Giorgio Borelli
collective.geo manifesto
  modular and easily extendable
  up to date and taking advantage of ZCA
  not related to a specific map service




                                                                                    Abstract
                                           Where is my content? — Giorgio Borelli
Use cases
Use the location field
ENEA
We can use the location field
of a content-type to
geo-locate the offices of a
company

    Archetypes
    collective.geo

http://www.enea.it



                                                                        Abstract
                               Where is my content? — Giorgio Borelli
Dexterity content types TTW
Tropical Data Hub
We can assign collective.geo
Maps behaviour to a
Dexterity content-type in
order to make it
geo-referenceable

    Dexterity
    collective.geo.behaviour

http://tropicaldatahub.org/


                                                                        Abstract
                               Where is my content? — Giorgio Borelli
Not only points
IW:LEARN
c.geo allows to geo-reference
content with different shapes

    Points
    Lines
    Polygons

http://iwlearn.net/




                                                                         Abstract
                                Where is my content? — Giorgio Borelli
Flexitopic
We can aggregate
geo-referenced contents with
a Plone collection and, with
flexitopic, we can show the
results on a table and
paginate them

    collective.flexitopic
    c.geo.flexitopic




                                                                        Abstract
                               Where is my content? — Giorgio Borelli
More customizations
AORIF
The modular structure of
collective.geo allows us to
customize it in a simple way

On saving a content we can
geolocate its address and show
it on a map. The user doesn't
need to know the coordinates
neither to use a complex UI.




                                                                          Abstract
                                 Where is my content? — Giorgio Borelli
Backend/frontend
We can use a different javascript
map services to display contents.

    Google maps
    Polymaps http://polymaps.org/
    Leaflet
    http://leaflet.cloudmade.com

    Kartograph
    http://kartograph.org

http://ferraraterraeacqua.it/




                                                                             Abstract
                                    Where is my content? — Giorgio Borelli
Plone.it - users' map
We can also view the portal
users in a specific map

With a portlet we can include the
map in a different context such
as a landing page.

    collective.geo.usersmap

http://plone.it/partecipa




                                                                             Abstract
                                    Where is my content? — Giorgio Borelli
Looking for my content
Inside Plone              when an object is geo-referenced an
                          event is fired by
   collective.geo.index   collective.geo.geographer

External catalogs              <subscriber
                                 handler=".MySubscriber"
   SOLR                          for="IObjectGeoreferencedEvent"
                               />
      collective.solr


   PostGIS




                                                                          Abstract
                                 Where is my content? — Giorgio Borelli
collective.geo under
      the hood
The core of collective.geo
Dependencies                     Installation
     Shapely                         [buildout]
                                     extends = http://dist.plone.org/release
     libgeos_c                       /4.2.1/versions.cfg

     geopy                           eggs =
                                       collective.geo.bundle
     BeautifulSoup                     BeautifulSoup
                                     ...




Note: Shapely dependency will be removed in the next release




                                                                                           Abstract
                                                  Where is my content? — Giorgio Borelli
collective.geo structure




                                                              Abstract
                     Where is my content? — Giorgio Borelli
collective.geo.openlayers
Includes the javascript library Openlayers in Plone and some other
javascripts that are useful for managing maps in collective.geo

  layer = new OpenLayers.Layer.Google(
    'Google maps',
    {
      'sphericalMercator':true,
      numZoomLevels:20
    }
  )




                                                                                     Abstract
                                            Where is my content? — Giorgio Borelli
collective.geo.geographer
    based on zgeo.geographer and      >>> class Placemark(object):
                                      ...     implements(
    zgeo.plone.geographer             ...       IGeoreferenceable,
                                      ...       IAttributeAnnotatable
    provides the basic mechanism to   ...     )
    enter geographic data into
                                      >>> placemark = Placemark()
    georeferenceable contents
                                      >>> geo = IGeoreferenced(placemark)
                                      >>> geo.setGeoInterface('Point',
any object can be georeferenced       ...               (-105.08, 40.59))




                                                                                  Abstract
                                         Where is my content? — Giorgio Borelli
collective.geo.settings
store default settings for collective.geo

    map center
    zoom level
    which layers have to be shown on the map
    which contents can be georeferenced
    default styles for all features




                                                                                     Abstract
                                            Where is my content? — Giorgio Borelli
collective.geo.mapwidget
  manages the mechanism that handles Openlayers maps in Plone
  each map widget is a Zope component which contains a series of
  layers
  all the maps in collective.geo are composed by one or more map
  layers and each layer returns a javascript snippet by a page template
  which contains all information about the layer itself




                                                                                   Abstract
                                          Where is my content? — Giorgio Borelli
collective.geo.mapwidget
 >>> from collective.geo.mapwidget import maplayer
 >>> class BingStretMapLayer(maplayer.MapLayer):
 ...     name = u"bing_map"
 ...     Title = _(u'Bing Streets')
 ...     type = 'bing'
 ...     jsfactory = """
 ...       function() {
 ...         return new OpenLayers.Layer.VirtualEarth('%s',
 ...           {'type': VEMapStyle.Shaded,
 ...            'sphericalMercator': true});
 ...       }""" % Title




 <metal:layer
     use-macro="context/@@collectivegeo-macros/map-widget" />
collective.geo.contentlocations
user interface for georeferencing Archetypes content types


    data can be inserted in WKT
    format
    geocoding with geopy
    it is possible to set
    customized styles




                                                                                          Abstract
                                                 Where is my content? — Giorgio Borelli
collective.geo.kml
registers a kml view on the georeferenced objects and on folderish
contents such as Folders and Collections.

the KML file can be used on external services like Google Earth/Maps




                                                                                     Abstract
                                            Where is my content? — Giorgio Borelli
Dexterity
collective.z3cform.mapwidget
     it's a specific widget for z3c.form that allows to manage the
     geographic data in an easy way

collective.geo.behaviour
     it's a Dexterity behaviour that allows to georeference contents and
     uses the annotations mechanism of collective.geo.geographer for
     registering data




                                                                                      Abstract
                                             Where is my content? — Giorgio Borelli
More extensions
collective.geo.mapcontent




                                                             Abstract
                    Where is my content? — Giorgio Borelli
collective.geo.file
it provides a view for KML, KMZ (Keyhole Markup Language) and GPX
(GPS eXchange Format) files.

The view renders the file in a openlayers Map using the collective.geo
library.




                                                                                     Abstract
                                            Where is my content? — Giorgio Borelli
Conclusion
 7 packages on the core (two more for Dexterity soon)
 9 addons packages
 translated in 9 languages
 Coactivate http://www.coactivate.org/projects/collectivegeo
 Readthedocs http://collectivegeo.readthedocs.org




                                                                                  Abstract
                                         Where is my content? — Giorgio Borelli
Contributors
 Sean Gillies                 Christian Ledermann - nan
 Silvio Tomatis - silviot     David Beitey - davidjb
 Gerhard Weis - gweis         Maurizio Delmonte - miziodel
 David Breitkreutz - rockdj   Alice Narduzzo
 Makina corpus                Enrico Barra




                                                                         Abstract
                                Where is my content? — Giorgio Borelli

Weitere ähnliche Inhalte

Kürzlich hochgeladen

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Kürzlich hochgeladen (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Where is my content?

  • 1. Geo-referencing content types in Plone with collective.geo Where is my content?
  • 2. Who am I? I'm senior developer and project manager with Abstract since 2011 I have been working with Plone since 2007 During the last years I have gained experience with various Python web development frameworks Abstract Where is my content? — Giorgio Borelli
  • 3. Web maps: when, why and how 1. Complex and specialized GIS application 2. Maps are the central part of the app Panoramio Foursquare Only-apartments 3. Geo-referenced CMS Abstract Where is my content? — Giorgio Borelli
  • 4. What is collective.geo collective.geo is a package that allows to geo-reference contents and to display them on a map http://plone.org/products/collective.geo In 2008 I faced two problems learning Plone 3 and the Zope component architecture put a lot of contents on a map Abstract Where is my content? — Giorgio Borelli
  • 5. What if c.geo was not there Plone products Cons Products.Maps 1. specific for Archetypes Products.ATGoogleMaps 2. can only georeference points redturtle.maps.core 3. can only use Google Maps raptus.article.map 4. developed for a specific project Abstract Where is my content? — Giorgio Borelli
  • 6. collective.geo manifesto modular and easily extendable up to date and taking advantage of ZCA not related to a specific map service Abstract Where is my content? — Giorgio Borelli
  • 8. Use the location field ENEA We can use the location field of a content-type to geo-locate the offices of a company Archetypes collective.geo http://www.enea.it Abstract Where is my content? — Giorgio Borelli
  • 9. Dexterity content types TTW Tropical Data Hub We can assign collective.geo Maps behaviour to a Dexterity content-type in order to make it geo-referenceable Dexterity collective.geo.behaviour http://tropicaldatahub.org/ Abstract Where is my content? — Giorgio Borelli
  • 10. Not only points IW:LEARN c.geo allows to geo-reference content with different shapes Points Lines Polygons http://iwlearn.net/ Abstract Where is my content? — Giorgio Borelli
  • 11. Flexitopic We can aggregate geo-referenced contents with a Plone collection and, with flexitopic, we can show the results on a table and paginate them collective.flexitopic c.geo.flexitopic Abstract Where is my content? — Giorgio Borelli
  • 12. More customizations AORIF The modular structure of collective.geo allows us to customize it in a simple way On saving a content we can geolocate its address and show it on a map. The user doesn't need to know the coordinates neither to use a complex UI. Abstract Where is my content? — Giorgio Borelli
  • 13. Backend/frontend We can use a different javascript map services to display contents. Google maps Polymaps http://polymaps.org/ Leaflet http://leaflet.cloudmade.com Kartograph http://kartograph.org http://ferraraterraeacqua.it/ Abstract Where is my content? — Giorgio Borelli
  • 14. Plone.it - users' map We can also view the portal users in a specific map With a portlet we can include the map in a different context such as a landing page. collective.geo.usersmap http://plone.it/partecipa Abstract Where is my content? — Giorgio Borelli
  • 15. Looking for my content Inside Plone when an object is geo-referenced an event is fired by collective.geo.index collective.geo.geographer External catalogs <subscriber handler=".MySubscriber" SOLR for="IObjectGeoreferencedEvent" /> collective.solr PostGIS Abstract Where is my content? — Giorgio Borelli
  • 17. The core of collective.geo Dependencies Installation Shapely [buildout] extends = http://dist.plone.org/release libgeos_c /4.2.1/versions.cfg geopy eggs = collective.geo.bundle BeautifulSoup BeautifulSoup ... Note: Shapely dependency will be removed in the next release Abstract Where is my content? — Giorgio Borelli
  • 18. collective.geo structure Abstract Where is my content? — Giorgio Borelli
  • 19. collective.geo.openlayers Includes the javascript library Openlayers in Plone and some other javascripts that are useful for managing maps in collective.geo layer = new OpenLayers.Layer.Google( 'Google maps', { 'sphericalMercator':true, numZoomLevels:20 } ) Abstract Where is my content? — Giorgio Borelli
  • 20. collective.geo.geographer based on zgeo.geographer and >>> class Placemark(object): ... implements( zgeo.plone.geographer ... IGeoreferenceable, ... IAttributeAnnotatable provides the basic mechanism to ... ) enter geographic data into >>> placemark = Placemark() georeferenceable contents >>> geo = IGeoreferenced(placemark) >>> geo.setGeoInterface('Point', any object can be georeferenced ... (-105.08, 40.59)) Abstract Where is my content? — Giorgio Borelli
  • 21. collective.geo.settings store default settings for collective.geo map center zoom level which layers have to be shown on the map which contents can be georeferenced default styles for all features Abstract Where is my content? — Giorgio Borelli
  • 22. collective.geo.mapwidget manages the mechanism that handles Openlayers maps in Plone each map widget is a Zope component which contains a series of layers all the maps in collective.geo are composed by one or more map layers and each layer returns a javascript snippet by a page template which contains all information about the layer itself Abstract Where is my content? — Giorgio Borelli
  • 23. collective.geo.mapwidget >>> from collective.geo.mapwidget import maplayer >>> class BingStretMapLayer(maplayer.MapLayer): ... name = u"bing_map" ... Title = _(u'Bing Streets') ... type = 'bing' ... jsfactory = """ ... function() { ... return new OpenLayers.Layer.VirtualEarth('%s', ... {'type': VEMapStyle.Shaded, ... 'sphericalMercator': true}); ... }""" % Title <metal:layer use-macro="context/@@collectivegeo-macros/map-widget" />
  • 24. collective.geo.contentlocations user interface for georeferencing Archetypes content types data can be inserted in WKT format geocoding with geopy it is possible to set customized styles Abstract Where is my content? — Giorgio Borelli
  • 25. collective.geo.kml registers a kml view on the georeferenced objects and on folderish contents such as Folders and Collections. the KML file can be used on external services like Google Earth/Maps Abstract Where is my content? — Giorgio Borelli
  • 26. Dexterity collective.z3cform.mapwidget it's a specific widget for z3c.form that allows to manage the geographic data in an easy way collective.geo.behaviour it's a Dexterity behaviour that allows to georeference contents and uses the annotations mechanism of collective.geo.geographer for registering data Abstract Where is my content? — Giorgio Borelli
  • 28. collective.geo.mapcontent Abstract Where is my content? — Giorgio Borelli
  • 29. collective.geo.file it provides a view for KML, KMZ (Keyhole Markup Language) and GPX (GPS eXchange Format) files. The view renders the file in a openlayers Map using the collective.geo library. Abstract Where is my content? — Giorgio Borelli
  • 30. Conclusion 7 packages on the core (two more for Dexterity soon) 9 addons packages translated in 9 languages Coactivate http://www.coactivate.org/projects/collectivegeo Readthedocs http://collectivegeo.readthedocs.org Abstract Where is my content? — Giorgio Borelli
  • 31. Contributors Sean Gillies Christian Ledermann - nan Silvio Tomatis - silviot David Beitey - davidjb Gerhard Weis - gweis Maurizio Delmonte - miziodel David Breitkreutz - rockdj Alice Narduzzo Makina corpus Enrico Barra Abstract Where is my content? — Giorgio Borelli