[Geoserver-devel] GeoServer OpenLS services implementation

Dear all,

I've been following discussions in the list for a while now, and I would like to introduce myself, my company and our projects, but first let me congratulate with you all for the valuable piece of software that GeoServer is!

My name is Ugo Paternostro, and I'm co-founder and co-owner of phoops s.r.l., an Italy based small business whose customers mainly are public.

BTW, this made me meet some of you in person (Simone, do you remember Tolomeo classes in Prato?).

We deal often with open source software, and in the last months we acquired a contract from one of our public customer to develop OpenLS services in GeoServer.

One of the contract constraints is that the develop have not to be a GeoServer fork, but has to integrate with the community work.

So, this is what led we here. I would like to summarize what we did so far:

1. we forked geoserver repo in GitHub (guess it? It's phoops/geoserver);

2. we created a branch on our repo for our developing, named 12I_CPO_TP from the internal project code;

3. we started the creation of a framework for the OpenLS services that, at the moment, includes the ols, ols_web and ols-RFC59 projects, all under the community module.

Please note that the project is in a very embryonic state, so don't expect too much at the moment.

We would be glad to discuss with you all design aspects of our project and, of course, to gather any hints you would like to share with us.

You will for sure hear from us in the next weeks, in the meanwhile I have just a couple of questions for you: are we doing it right? :wink: Should we apply for some sort of agreement with OpenPlans?

Bye, UP

--
Ugo Paternostro
ITIL® v3 Foundation Certified
phoops s.r.l.
Via della Torretta, 14
50137 Firenze FI

P.IVA: 0578705 048 2

Tel.: 055/3985676
Fax : 055/5609730
GSM : 347/7975881
Mail: ugo.paternostro@anonymised.com

Welcome! And thanks for your praise, on behalf of all who have worked on GeoServer.

That’s great you get to join the community with this contract. And OpenLS would be a cool improvement to have as modules on GeoServer. Are you doing all of the OpenLS services? Or just a subset? I feel like there’s five or six, though I’m not sure if they’re all useful. I think the most interesting ones to a wider audience are geocoding and routing. Both very big topics in themselves, with lots of potential for innovation. My one naive advice is to be sure to keep your specification implementation nice and orthogonal to the backend, so that other developers can experiment with different implementations but all be able to easily meet the OpenLS spec requirements.

Also, are you looking at OpenTripPlanner at all? http://opentripplanner.org/ They do some really nice routing in pure java, and they make use of GeoTools already. I’ve long wanted some nice integration in GeoServer. I don’t believe they implement OpenLS though.

···

All your community work thus far is right on. And yeah, getting a contributor agreement to OpenPlans would be good, but not required at this point. I need to look in to some others that people have sent in (I am at OpenPlans). When you do mail it if you could also email me a scan of it that could be helpful.

Definitely do write up your design thoughts to the list. I’m not sure if anyone will sound in, but it will no matter what be useful for any future developers who might be interested in contributing to OpenLS, to see what you were thinking when you built it. I’m also curious what RFC59 is, I couldn’t find any reference online to it.

But yeah, stay in touch with the list, keep us updated on your plans and progress.

best regards,

Chris

On Mon, Jan 14, 2013 at 11:03 AM, Ugo Paternostro <ugo.paternostro@anonymised.com> wrote:

Dear all,

I’ve been following discussions in the list for a while now, and I would
like to introduce myself, my company and our projects, but first let me
congratulate with you all for the valuable piece of software that
GeoServer is!

My name is Ugo Paternostro, and I’m co-founder and co-owner of phoops
s.r.l., an Italy based small business whose customers mainly are public.

BTW, this made me meet some of you in person (Simone, do you remember
Tolomeo classes in Prato?).

We deal often with open source software, and in the last months we
acquired a contract from one of our public customer to develop OpenLS
services in GeoServer.

One of the contract constraints is that the develop have not to be a
GeoServer fork, but has to integrate with the community work.

So, this is what led we here. I would like to summarize what we did so far:

  1. we forked geoserver repo in GitHub (guess it? It’s phoops/geoserver);

  2. we created a branch on our repo for our developing, named 12I_CPO_TP
    from the internal project code;

  3. we started the creation of a framework for the OpenLS services that,
    at the moment, includes the ols, ols_web and ols-RFC59 projects, all
    under the community module.

Please note that the project is in a very embryonic state, so don’t
expect too much at the moment.

We would be glad to discuss with you all design aspects of our project
and, of course, to gather any hints you would like to share with us.

You will for sure hear from us in the next weeks, in the meanwhile I
have just a couple of questions for you: are we doing it right? :wink:
Should we apply for some sort of agreement with OpenPlans?

Bye, UP


Ugo Paternostro
ITIL® v3 Foundation Certified
phoops s.r.l.
Via della Torretta, 14
50137 Firenze FI

P.IVA: 0578705 048 2

Tel.: 055/3985676
Fax : 055/5609730
GSM : 347/7975881
Mail: ugo.paternostro@anonymised.com…


Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only – learn more at:
http://p.sf.net/sfu/learnmore_122412


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On 17/01/2013 17:50, Chris Holmes wrote:

OpenLS would be a cool improvement to have as modules on GeoServer. Are

Glad to hear that.

you doing all of the OpenLS services? Or just a subset? I feel like
there's five or six, though I'm not sure if they're all useful. I think
the most interesting ones to a wider audience are geocoding and routing.

Yes, they defined Reverse Geocoding, Presentation & Directory services, too.

We are going to develop Geocoding, Reverse Geocoding and Routing. ATM we are discussing with our client about Presentation usefulness, as we have some doubt about that.

Both very big topics in themselves, with lots of potential for

Why didn't I ask before signing the contract? :wink:

innovation. My one naive advice is to be sure to keep your specification
implementation nice and orthogonal to the backend, so that other
developers can experiment with different implementations but all be able
to easily meet the OpenLS spec requirements.

Requirements are very clear: we need to add an OpenLS interface to GeoServer and design a backend interface to make it pluggable.

Also, are you looking at OpenTripPlanner at all?

That's one of the plugin required for Routing, along with pgRouting.

this point. I need to look in to some others that people have sent in (I
am at OpenPlans). When you do mail it if you could also email me a scan
of it that could be helpful.

Sure I will. Thanks!

Definitely do write up your design thoughts to the list. I'm not sure if

Ok, I will try.

At the moment we are going with this design: OLS module is the main module that implements the OpenLS services. It manages XML over HTTP/POST requests and dispatches them to the appropriate handler (one handler per OpenLS service).

Each handler reads its configuration from the GeoServer web console (OLS-WEB module), where you can set parameters like end point of backend web services, hostname of remote server and so on (I think you got the idea...)

A few plugin (will) exist to connect to various backends. They are:

- for Geocoding
   - RFC 59 (please read about this below)
   - SOLR

- for Reverse geocoding
   - SOLR

- for Routing
   - OTP
   - pgRouting

Each one will live in its own project and be activated automagically by Spring if it finds the JAR in the classpath.

Incidentally, we are also asked to develop ExtJS components to interact with an OpenLS server, but that's another story...

Questions, opinions, hints and flames are welcome!

see what you were thinking when you built it. I'm also curious what
RFC59 is, I couldn't find any reference online to it.

I can easily understand that :slight_smile:

RFC59 is one of the Tuscany Region interoperability standard. Here in Tuscany the local government pays quite a lot of attention to technical definitions of standards regarding the various domains of their IT infrastructure.

They founded a board to discuss and standardize infrastructures, protocols and services, ranging from medical data interchange (based on HL7) to street networks.

So, RFC59 is Regione Toscana geocoder service. It's very small compared to OpenLS Geocoder Core Service, but it needs to be taken in account as our customer asked for that, both because he is a public one and because he wants to have the opportunity to check the Geocoding design against two backends.

I can give you the URL of the web site, but I'm afraid you'll need a quick Italian course to begin reading the docs :wink:

But yeah, stay in touch with the list, keep us updated on your plans and
progress.

The plan is a very busy one: we need to deliver in a couple of months.

I would like to ask some more question, just for the ones that have been able to read all this concise email without falling asleep suddenly at line 3 :slight_smile:

1. AFAIK, OpenLS binding is XML over HTTP/POST. Maybe there is a SOAP profile, too, but definitively no HTTP/GET method a-la WMS. So the service is not an OWS service in GeoServer terms, correct?

2. OpenLS may require authentication/authorization. Any hint on how to integrate in GeoServer one? I must admit that I didn't look at that yet...

Many thanks for your patience and support!

Chris

Bye, UP

Hi everyone,

Last month I have developed a working OpenLS geocoder on top of SOLR 4.0. The application is still in the demo phase, but we have proven that SOLR is a promising foundation for a geocoder service.

I'd be glad to cooperate to expand the support of open GIS services in GeoServer. So, feel free to contact me.

Cheers,

Jan

On 17-1-2013 19:29, Ugo Paternostro wrote:

On 17/01/2013 17:50, Chris Holmes wrote:

OpenLS would be a cool improvement to have as modules on GeoServer. Are

Glad to hear that.

you doing all of the OpenLS services? Or just a subset? I feel like
there's five or six, though I'm not sure if they're all useful. I think
the most interesting ones to a wider audience are geocoding and routing.

Yes, they defined Reverse Geocoding, Presentation & Directory services, too.

We are going to develop Geocoding, Reverse Geocoding and Routing. ATM we
are discussing with our client about Presentation usefulness, as we have
some doubt about that.

Both very big topics in themselves, with lots of potential for

Why didn't I ask before signing the contract? :wink:

innovation. My one naive advice is to be sure to keep your specification
implementation nice and orthogonal to the backend, so that other
developers can experiment with different implementations but all be able
to easily meet the OpenLS spec requirements.

Requirements are very clear: we need to add an OpenLS interface to
GeoServer and design a backend interface to make it pluggable.

Also, are you looking at OpenTripPlanner at all?

That's one of the plugin required for Routing, along with pgRouting.

this point. I need to look in to some others that people have sent in (I
am at OpenPlans). When you do mail it if you could also email me a scan
of it that could be helpful.

Sure I will. Thanks!

Definitely do write up your design thoughts to the list. I'm not sure if

Ok, I will try.

At the moment we are going with this design: OLS module is the main
module that implements the OpenLS services. It manages XML over
HTTP/POST requests and dispatches them to the appropriate handler (one
handler per OpenLS service).

Each handler reads its configuration from the GeoServer web console
(OLS-WEB module), where you can set parameters like end point of backend
web services, hostname of remote server and so on (I think you got the
idea...)

A few plugin (will) exist to connect to various backends. They are:

- for Geocoding
    - RFC 59 (please read about this below)
    - SOLR

- for Reverse geocoding
    - SOLR

- for Routing
    - OTP
    - pgRouting

Each one will live in its own project and be activated automagically by
Spring if it finds the JAR in the classpath.

Incidentally, we are also asked to develop ExtJS components to interact
with an OpenLS server, but that's another story...

Questions, opinions, hints and flames are welcome!

see what you were thinking when you built it. I'm also curious what
RFC59 is, I couldn't find any reference online to it.

I can easily understand that :slight_smile:

RFC59 is one of the Tuscany Region interoperability standard. Here in
Tuscany the local government pays quite a lot of attention to technical
definitions of standards regarding the various domains of their IT
infrastructure.

They founded a board to discuss and standardize infrastructures,
protocols and services, ranging from medical data interchange (based on
HL7) to street networks.

So, RFC59 is Regione Toscana geocoder service. It's very small compared
to OpenLS Geocoder Core Service, but it needs to be taken in account as
our customer asked for that, both because he is a public one and because
he wants to have the opportunity to check the Geocoding design against
two backends.

I can give you the URL of the web site, but I'm afraid you'll need a
quick Italian course to begin reading the docs :wink:

But yeah, stay in touch with the list, keep us updated on your plans and
progress.

The plan is a very busy one: we need to deliver in a couple of months.

I would like to ask some more question, just for the ones that have been
able to read all this concise email without falling asleep suddenly at
line 3 :slight_smile:

1. AFAIK, OpenLS binding is XML over HTTP/POST. Maybe there is a SOAP
profile, too, but definitively no HTTP/GET method a-la WMS. So the
service is not an OWS service in GeoServer terms, correct?

2. OpenLS may require authentication/authorization. Any hint on how to
integrate in GeoServer one? I must admit that I didn't look at that yet...

Many thanks for your patience and support!

Chris

Bye, UP

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Apologies for the slow response, some comments inline.

···

you doing all of the OpenLS services? Or just a subset? I feel like
there’s five or six, though I’m not sure if they’re all useful. I think
the most interesting ones to a wider audience are geocoding and routing.

Yes, they defined Reverse Geocoding, Presentation & Directory services, too.

We are going to develop Geocoding, Reverse Geocoding and Routing. ATM we are discussing with our client about Presentation usefulness, as we have some doubt about that.

What are Presentation and Directory services? Like what do they do? Geocoding, reverse geocoding and routing sound great to have in GeoServer.

Both very big topics in themselves, with lots of potential for

Why didn’t I ask before signing the contract? :wink:

:slight_smile: I do think you can make a great start, especially with the technologies you’ve chosen. So I imagine your customer will be happy.

innovation. My one naive advice is to be sure to keep your specification
implementation nice and orthogonal to the backend, so that other
developers can experiment with different implementations but all be able
to easily meet the OpenLS spec requirements.

Requirements are very clear: we need to add an OpenLS interface to GeoServer and design a backend interface to make it pluggable.

Great.

Also, are you looking at OpenTripPlanner at all?

That’s one of the plugin required for Routing, along with pgRouting.

Excellent.

Definitely do write up your design thoughts to the list. I’m not sure if

Ok, I will try.

At the moment we are going with this design: OLS module is the main module that implements the OpenLS services. It manages XML over HTTP/POST requests and dispatches them to the appropriate handler (one handler per OpenLS service).

Each handler reads its configuration from the GeoServer web console (OLS-WEB module), where you can set parameters like end point of backend web services, hostname of remote server and so on (I think you got the idea…)

A few plugin (will) exist to connect to various backends. They are:

  • for Geocoding

  • RFC 59 (please read about this below)

  • SOLR

  • for Reverse geocoding

  • SOLR

  • for Routing

  • OTP

  • pgRouting

Each one will live in its own project and be activated automagically by Spring if it finds the JAR in the classpath.

Awesome. Like I said above, I think those are great choices. I know TriMet in Portland, OR has had some good success using SOLR for GeoCoding, but theirs was too specific to their data for it to be that useful to open source, from my understanding. So having a more generic solr geocoder would be great.

Will the geocoder or the routing service be configurable with the same datastores that people configure in GeoServer, like through the GUI? Or do they take special configuration. I know OTP requires more stuff to be configured, but it’d be great if people could start with their already configured datastores, and then add the ‘more’ from there.

Incidentally, we are also asked to develop ExtJS components to interact with an OpenLS server, but that’s another story…

Cool. Would be great to get those as components in GeoExt, and I think they’d be appropriate there, as it is an open standards interface. We also work on a framework on top of GeoExt, see http://gxp.opengeo.org/master/examples/ We tend to do geoserver specific stuff there. It does offer a nicer plugin framework to more easily build applications. So feel free to leverage that. You may also be able to borrow some code from TriMet or OTP, as they have some nice GUI’s for routing.

Questions, opinions, hints and flames are welcome!

see what you were thinking when you built it. I’m also curious what
RFC59 is, I couldn’t find any reference online to it.

I can easily understand that :slight_smile:

RFC59 is one of the Tuscany Region interoperability standard. Here in Tuscany the local government pays quite a lot of attention to technical definitions of standards regarding the various domains of their IT infrastructure.

They founded a board to discuss and standardize infrastructures, protocols and services, ranging from medical data interchange (based on HL7) to street networks.

So, RFC59 is Regione Toscana geocoder service. It’s very small compared to OpenLS Geocoder Core Service, but it needs to be taken in account as our customer asked for that, both because he is a public one and because he wants to have the opportunity to check the Geocoding design against two backends.

I can give you the URL of the web site, but I’m afraid you’ll need a quick Italian course to begin reading the docs :wink:

Interesting. I’ll pass, just good to know what it’s generally about.

But yeah, stay in touch with the list, keep us updated on your plans and
progress.

The plan is a very busy one: we need to deliver in a couple of months.

I would like to ask some more question, just for the ones that have been able to read all this concise email without falling asleep suddenly at line 3 :slight_smile:

  1. AFAIK, OpenLS binding is XML over HTTP/POST. Maybe there is a SOAP profile, too, but definitively no HTTP/GET method a-la WMS. So the service is not an OWS service in GeoServer terms, correct?

I’m pretty sure it could be an OWS service in GeoServer terms. WCS and WFS both do xml over http/post, though they do offer http/get for most of the methods (though not all, I think you can’t do a WFS insert transaction without post). And I think WPS may be just post. So I believe you should be able to tap in to the general OWS dispatcher, which probably will help to be more in line with the geoserver way, easier integration with like security (though a core dev may correct me there).

  1. OpenLS may require authentication/authorization. Any hint on how to integrate in GeoServer one? I must admit that I didn’t look at that yet…

First place to read up is probably here: http://docs.geoserver.org/latest/en/user/security/ Though that’s mostly from a user perspective, not a developer adding auth. The sub-system we use for security is http://static.springsource.org/spring-security/site/ So learning about that in general will help quite a bit. So yeah, I’d say dive in to those a bit, and then ask specific questions on the developers list, as most of the people who have worked on it are active.

Many thanks for your patience and support!

Thanks for engaging publicly and for your coming contributions. Looking forward to it.

best regards,

Chris

Chris

Bye, UP

Hi All,

this sounds very good about the level of abstraction to serve any use case
related to geocoding+routing. I would be very happy to learn more from Ugo's
approach to these problems in a standardized way. I'm currently involved in
a nationwide project about logistic that uses an Oracle Spatial backend and
we are thinking about to exploit GS in order to expose web services which
accomplish those functionalities.

I'll take a read at RFC from Ugo

Regards,

Ing. Francesco Bartoli
CTO & Owner
GeoBeyond Srl
Via M. Augusta 68
02040 - Vacone (RI) - Italy
http://www.geobeyond.it
Twitter: twitter.com/geobeyond
SkypeId: francesco_bartoli

--
View this message in context: http://osgeo-org.1560.n6.nabble.com/GeoServer-OpenLS-services-implementation-tp5027381p5043140.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.