<div dir="ltr">Thank you very much for the information Albert, we are surely running into that problem with our current workflow, I will try out the alternative you spell out and get back to the list with the results<div><br></div><div>JF</div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jan 25, 2017 at 12:45 PM Albert Godfrind <<a href="mailto:albert.godfrind@oracle.com">albert.godfrind@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">Going back to the original issue:</div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_msg m_7276663766114866903m_-2869848341016239259HOEnZb"><div class="gmail_msg m_7276663766114866903m_-2869848341016239259h5"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">> A python 3 script using libLAS opens the LAS tile, runs through each crown to find the points associated to it and stores the result as a LAS file. The issue is that an individual LAS file is created for each tree crown, when we have more than 40,000 crowns per tile the system starts swapping (windows and linux) and the process just gets very slow. Then another script reads the las points, calculates metrics which are then stored in the database. This 'clipping' operation for the tree crowns only happens once at the beginning, it is not a problem. But it would take a month right now using libLAS which is not acceptable.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">><br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">> So all I am looking for ;) is a linux python library that can write up tp 100,000 'mini-LAS' tree crowns from a las tile without running out of memory like libLAS does. Believe PDAL could do that quite simply via Python hence my attempts. I know that laspy exists but it is only for Python 2</blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></blockquote></div><div class="gmail_msg"><br class="gmail_msg"></div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">I assume you are writing out those 40000 individual las files into the same directory ? Very few file systems (actually I don’t know of any) will handle gracefully that number of files in a single directory. Not to mention issues with access tools and shell expansion (“*” gets expanded into a massive command line). Maybe one thing to try is to build a directory hierarchy so that each contains a reasonable number of sub-directories and files at the bottom. Something like:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">- top level directory is called las_crowns</div><div class="gmail_msg">- it contains 10 directories, called 01 to 10.</div><div class="gmail_msg">- each of those contains 10 directories also called 01 to 10</div><div class="gmail_msg">- each of those contains 400 las files</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">So the full file spec of a random crown file is then like “./las_crowns/03/02/crown_nnnn.las” … Add more intermediate levels if the number of files to manage increases.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I assume you use some kind of meaningful naming convention for your files, so it should not be too difficult to expand it to include the sub-directory names. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">This may not actually solve the memory issue - but i think it is a general good practice when dealing with large numbers of files. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Albert</div></div><div style="word-wrap:break-word" class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On 24-Jan-2017, at 15:55, Jean-Francois Prieur <<a href="mailto:jfprieur@gmail.com" class="gmail_msg" target="_blank">jfprieur@gmail.com</a>> wrote:</div><br class="m_7276663766114866903Apple-interchange-newline gmail_msg"><div class="gmail_msg">Hi Jennifer, yes I found that GitHub page yesterday, we are using 3.5 (of course) but am going to give it a shot next week.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks for the link!<br class="gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Tue, Jan 24, 2017, 03:46 Jennifer Simeon <<a href="mailto:j.simeon@geo-sat.fr" class="gmail_msg" target="_blank">j.simeon@geo-sat.fr</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Hi Jean-Francois,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Don't know if it is still relevant for you after the expert replies, but there exists a laspy version I've been using with Python 3.4. You can clone it from GitHub.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><a href="https://github.com/sethrh/laspy" class="gmail_msg" target="_blank">https://github.com/sethrh/laspy</a><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Best, J.</div><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg">On 23 January 2017 at 20:46, Jean-Francois Prieur <span dir="ltr" class="gmail_msg"><<a href="mailto:jfprieur@gmail.com" class="gmail_msg" target="_blank">jfprieur@gmail.com</a>></span> wrote:<br class="gmail_msg"></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Thank you for the insights on how the sausage is made ;), I am not tied to Windows and am actively trying to get away from it!<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Will try the docker tools if we must follow the windows route, thanks again. Will keep you posted on our progress. Keep focused on linux ;) as I stated I am removing windows from my workflow as much as possible. You did not break anything rest assured!</div><span class="gmail_msg m_7276663766114866903m_-2869848341016239259HOEnZb"><font color="#888888" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">JF</div></font></span></div><div class="gmail_msg m_7276663766114866903m_-2869848341016239259HOEnZb"><div class="gmail_msg m_7276663766114866903m_-2869848341016239259h5"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Mon, Jan 23, 2017 at 2:18 PM Howard Butler <<a href="mailto:howard@hobu.co" class="gmail_msg" target="_blank">howard@hobu.co</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
> On Jan 23, 2017, at 11:31 AM, Jean-Francois Prieur <<a href="mailto:jfprieur@gmail.com" class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg" target="_blank">jfprieur@gmail.com</a>> wrote:<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
><br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
> When the student started (almost 2 years ago), we used OSGeo4W open source tools for development. The initial workflow was awesome. Read each file with PDAL, use pgwriter to send it to postgres, calculate all the metrics in the database. Worked like a charm until pgwriter dissapeared from the osgeo4w version of PDAL (we completely understand how this can happen, this is not a complaint!) so this production chain was broken. We both did not have the time (at the time) to figure out how to install everything in linux so she decided to press forward using Python. The end product is still in Postgres, it is the initial 'reading the LAS file' part that pgwriter performed flawlessly that is causing issues now.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
Well that's a bummer. Your use case is actually a good one for pgpointcloud, and you had a good workflow going. Sorry to break things for you :(<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
I was recently contacted by NRCan about them paying to get a 1.8.1 OSGeo4W64 libLAS build together, but I have not heard back anything after I gave a quote. I think 1.8.0 definitely had a memory management issue where it leaked file handles. IIRC, it was cleaned up in 1.8.1, but IMO pgointcloud, which you already had working is the better solution here.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
An alternative that might give you traction is to use Docker <a href="http://www.pdal.io/quickstart.html" rel="noreferrer" class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg" target="_blank">http://www.pdal.io/quickstart.html</a> The PDAL docker build is feature-complete with pgpointcloud support (and most other filters), and you could use it to get data in/out of your database by calling docker commands on windows. See the Quickstart <a href="http://www.pdal.io/quickstart.html" rel="noreferrer" class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg" target="_blank">http://www.pdal.io/quickstart.html</a> for a teaser and the Workshop materials <a href="http://www.pdal.io/workshop/exercises/index.html" rel="noreferrer" class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg" target="_blank">http://www.pdal.io/workshop/exercises/index.html</a> for in-depth docker-on-windows examples. Docker might require Windows 10 for smooth usage, however.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
A better solution of course is pgpointcloud support and current OSGeo4W64 binaries for windows. If you are willing to live dangerously, PDAL's continuous integration build, based off of OSGeo464, builds pgpointcloud-enabled binaries. It's just that you can only get a .zip file of the binaries, and you will need to do some %PATH% plumbing and other junk to get them to work with a current OSGeo4W64 environment. After every successful AppVeyor build, the zip file is placed at <a href="https://s3.amazonaws.com/pdal/osgeo4w/pdal.zip" rel="noreferrer" class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg" target="_blank">https://s3.amazonaws.com/pdal/osgeo4w/pdal.zip</a> This means a constantly-changing but constantly up-to-date build is available. No promises.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
A note for others watching PDAL's Windows situation: the problem is not getting builds done -- they're available via AppVeyor. The problem is smooth integration with OSGeo4W64, and a convenient packaging script to push releases at OSGeo4W64. I used to manually maintain this for libLAS, and it was awful. The first few OSGeo4W64 builds were the same. The task is an integration one, not so much a development one.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
> A python 3 script using libLAS opens the LAS tile, runs through each crown to find the points associated to it and stores the result as a LAS file. The issue is that an individual LAS file is created for each tree crown, when we have more than 40,000 crowns per tile the system starts swapping (windows and linux) and the process just gets very slow. Then another script reads the las points, calculates metrics which are then stored in the database. This 'clipping' operation for the tree crowns only happens once at the beginning, it is not a problem. But it would take a month right now using libLAS which is not acceptable.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
><br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
> So all I am looking for ;) is a linux python library that can write up tp 100,000 'mini-LAS' tree crowns from a las tile without running out of memory like libLAS does. Believe PDAL could do that quite simply via Python hence my attempts. I know that laspy exists but it is only for Python 2.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
So you do indeed want to "touch the points"... but I think it would be best and cleanest to get back to pgpointcloud. You can get back there with Docker for i/o or try to bleed on the bleeding edge with the AppVeyor build and feather it into your OSGeo4W64 build.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
> Thanks for any insights the list may have, keeping in mind we are relative programming noob scientists that don`t mind to work and read!<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
> Sorry for the book!<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
On the contrary, this kind of feedback lets us know how well or not well PDAL is doing the job for people. As I've said before, we have a particular set of use cases we use PDAL for, and it is encouraging that people are finding other ways to make it useful. We want to remove obvious blockers that prevent it from being so. Windows builds and integration are a tough one due to the fact that none of the PDAL developers work natively on that platform.<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
Thanks for the feedback!<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
Howard<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
<br class="m_7276663766114866903m_-2869848341016239259m_2935117779574924925gmail_msg gmail_msg">
</blockquote></div>
</div></div><br class="gmail_msg"></blockquote></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">_______________________________________________<br class="gmail_msg">
pdal mailing list<br class="gmail_msg">
<a href="mailto:pdal@lists.osgeo.org" class="gmail_msg" target="_blank">pdal@lists.osgeo.org</a><br class="gmail_msg">
<a href="https://lists.osgeo.org/mailman/listinfo/pdal" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.osgeo.org/mailman/listinfo/pdal</a><br class="gmail_msg"></blockquote></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"></blockquote></div><br class="gmail_msg"><br clear="all" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div>-- <br class="gmail_msg"><div class="gmail_msg m_7276663766114866903m_-2869848341016239259gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><b style="font-size:12.8px" class="gmail_msg">Jennifer SIMEON</b></div><div dir="ltr" class="gmail_msg"><div style="font-size:12.8px" class="gmail_msg"><i style="font-size:12.8px" class="gmail_msg">Data Scientist</i></div><div style="font-size:12.8px" class="gmail_msg"><i style="font-size:12.8px" class="gmail_msg">Responsable Développement Big Data 3D</i><br class="gmail_msg"></div><div style="font-size:12.8px" class="gmail_msg"><div class="gmail_msg"><b class="gmail_msg">-----------------------------------------------------</b></div><div class="gmail_msg"><b class="gmail_msg">Geosat - Société de Géomètres-Experts</b></div></div><div style="font-size:12.8px" class="gmail_msg"><img src="https://sites.google.com/a/geo-sat.fr/book/home/GEOSAT.JPG" width="200" height="36" class="gmail_msg"><br class="gmail_msg"></div><div style="font-size:12.8px" class="gmail_msg"><div class="gmail_msg">17 rue Thomas Edison </div><div class="gmail_msg">33600 Pessac, France</div><div class="gmail_msg">Tél: <a href="tel:+33%205%2056%2078%2014%2033" value="+33556781433" class="gmail_msg" target="_blank">+33 5 56 78 14 33 ext 5011</a></div><div class="gmail_msg">@: j<a href="mailto:p.jacq@geo-sat.fr" style="color:rgb(17,85,204)" class="gmail_msg" target="_blank">.simeon@geo-sat.fr</a></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><p style="font-size:12.8px" class="gmail_msg"><img class="gmail_msg"><img style="font-size:12.8px" class="gmail_msg"><img style="font-size:12.8px" class="gmail_msg"><img src="https://docs.google.com/uc?export=download&id=0B1jYftuxlfOGSTVKR0NpS2VxRVk&revid=0B1jYftuxlfOGMmkzdkFvejcrbW9SZTNMM3daQ0dQRGU0a21BPQ" alt="Displaying " style="font-size:12.8px" width="200" height="139" class="gmail_msg"><br class="gmail_msg"></p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div></div>
</blockquote></div></div>
_______________________________________________<br class="gmail_msg">pdal mailing list<br class="gmail_msg"><a href="mailto:pdal@lists.osgeo.org" class="gmail_msg" target="_blank">pdal@lists.osgeo.org</a><br class="gmail_msg"><a href="https://lists.osgeo.org/mailman/listinfo/pdal" class="gmail_msg" target="_blank">https://lists.osgeo.org/mailman/listinfo/pdal</a></div></blockquote></div><br class="gmail_msg"></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><span class="m_7276663766114866903Apple-style-span gmail_msg" style="border-collapse:separate;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;border-spacing:0px"><div style="word-wrap:break-word" class="gmail_msg"><span class="m_7276663766114866903Apple-style-span gmail_msg" style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px"><div style="color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg">--<br class="gmail_msg"><a href="http://www.oracle.com" class="gmail_msg" target="_blank"><img alt="ORACLE" src="http://www.oracle.com/dm/design/images/oracle_sig_logo.gif" style="border-width:0px;border-style:solid;width:114px;height:26px" class="gmail_msg"></a></div></span></div></span></div></div></div></div></div></div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><div style="color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><span class="m_7276663766114866903Apple-style-span gmail_msg" style="border-collapse:separate;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;line-height:normal;border-spacing:0px"><div style="word-wrap:break-word" class="gmail_msg"><span class="m_7276663766114866903Apple-style-span gmail_msg" style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;border-spacing:0px"><div style="color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg"><br class="gmail_msg"><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">Albert Godfrind | Geospatial technologies | Tel: <a href="tel:+33%204%2093%2000%2080%2067" value="+33493008067" class="gmail_msg" target="_blank">+33 4 93 00 80 67</a></font><span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">| Mobile: <a href="tel:+33%206%2009%2097%2027%2023" value="+33609972723" class="gmail_msg" target="_blank">+33 6 09 97 27 23</a></font><span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">| Twitter: @agodfrin</font><br class="gmail_msg"><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg"><font color="#ff0000" class="gmail_msg">Oracle</font><span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span>Server Technologies<br class="gmail_msg">400 Av. Roumanille,</font><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg"><span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span></font><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">BP 309 </font><span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">|</font><span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">06906 Sophia Antipolis cedex<span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span></font><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">|<span class="m_7276663766114866903Apple-converted-space gmail_msg"> </span></font><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif" size="2" class="gmail_msg">France<br class="gmail_msg"><a href="http://www.apress.com/9781590598993" class="gmail_msg" target="_blank">Everything you ever wanted to know about Oracle Spatial</a></font></div></span></div></span></div></div></div></div></div></div></div></blockquote></div>