Take the 2-minute tour ×

I am trying apply a positive offset/buffer (enlarge a shape equally from the borders) to a polygon that is made up of a series of latitude/longitude coordinates by a distance that is defined in either miles or kilometers, as apposed to a distance specified as a magnitude of the shape.

My research has dug up a number of libraries that will enlarge a polygon by a given magnitude, however this magnitude is relative to the units that the polygon is specified in which isn't helpful in the case of lat/lng coordinates given the shape of the Earth and the changing proportions depending on position on Earth.

I need to accomplish this server side preferably and have dabbled with arcgis's rest service which isn't working for me. Also have looked into ClipperJS and gotten close, however couldn't translate it's delta variable, the scale of increase into miles or km.

Can anyone tell me how this might be achieved? I imagine this is not a straightforward problem but certainly one that has needed to be solved before.

share|improve this question
Could you explain how what you are doing differs from buffering a polygon, which is a routine operation offered by most GISes, especially ArcGIS? –  whuber Apr 10 '13 at 15:52
Hi, I am buffering a polygon by miles/km rather than as a magnitude of the latg/lng coordinates which, say, Clipper uses. I have not come accross any library that does this except ArcGIS, but their REST API has been causing us issues when using complex polygons. –  Larry B Apr 10 '13 at 16:00
Just about every GIS creates buffers based on a stipulated buffer distance rather than relative to the size of the original feature! I don't know what ClipperJS is, but it sounds like a rare exception. –  whuber Apr 10 '13 at 16:03
Ah OK thanks, know of any GIS libraries in PHP? –  Larry B Apr 10 '13 at 16:05
And clipper is an "open source freeware polygon clipping library", rather than a complete GIS. –  Larry B Apr 10 '13 at 16:05

Your Answer



Browse other questions tagged or ask your own question.