# [Baypiggies] Hi all -can anyone convert this code to python---many thanks

Sharon Kazemi sharonk at gisc.berkeley.edu
Thu Dec 14 19:16:31 CET 2006

```Hi all,

have below code that needs to be recoded into Python for use in ESRI ArcGIS
software.
I would greatly appreciate any assistance.
Thanks
Sheri

/*  The Inner Loop of the Douglas-Peucker line generalization
algorithm is the process of finding, for a section of a polyline,
the vertex that is furthest from the line segment joining the
two endpoints.  The method coded below in C (or C++) is the most
efficient, in terms of operation counts, that I have seen.  */
/*  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  */

long FurthestFromSegment ( /* Return index of furthest point.  */
long    startindex,    /* Index of start vertex in arrays.  */
long    endindex,      /* Index of end vertex in arrays.  */
double *x         ,    /* Array, abscissae of polyline vertices. */
double *y         ,    /* Array, ordinates of polyline vertices. */
double *distMaxSquare  /* Return square of maximum distance.  */
)
/*
This function, given a section of a polyline in arrays,
will return the index of the intermediate node that is furthest
from the segment joining the two endpoints of the section,
and the square of the distance from the segment.

If no intermediate point exists, then the returned index will
be the index of the start vertex and the returned distance
squared will be -1.0 .  Caution:  Do not calculate the square
root of this returned value without ruling out the possibility
that it may have defaulted to -1.0 .  In a normal
Douglas-Peucker application, you should never have to calculate
the square root of this output value, and you should never
need to invoke this function without intermediate points.
*/
{
/*
The variable names below assume we find
the distance of point "A" from segment "BC" .
*/
long index, outindex ;
double distSquare, bcSquare ;
double cx, cy, bx, by, ax, ay ;
double bcx, bcy, bax, bay, cax, cay ;

*distMaxSquare  =  -1.0 ;
if ( endindex  <  startindex + 2 )    return startindex ;
outindex  =  startindex ;
bx  =  x[startindex] ;
by  =  y[startindex] ;
cx  =  x[endindex] ;
cy  =  y[endindex] ;
/* Find vector BC and the Square of its length.  */
bcx  =  cx - bx ;
bcy  =  cy - by ;
bcSquare  =  bcx * bcx  +  bcy * bcy ;
/* The inner loop:  */
for ( index = startindex + 1 ; index < endindex ; index++ )
{
/* Find vector BA .  */
ax  =  x[index] ;
ay  =  y[index] ;
bax  =  ax - bx ;
bay  =  ay - by ;
/* Do scalar product and check sign.  */
if ( bcx * bax  +  bcy * bay    <=    0.0 )
{
/* Closest point on segment is B; */
/*   find its distance (squared) from A .  */
distSquare   =   bax * bax  +  bay * bay ;
}
else
{
/* Find vector CA .  */
cax  =  ax - cx ;
cay  =  ay - cy ;
/* Do scalar product and check sign.  */
if ( bcx * cax  +  bcy * cay    >=    0.0 )
{
/* Closest point on segment is C; */
/*   find its distance (squared) from A .  */
distSquare   =   cax * cax  +  cay * cay ;
}
else
{
/* Closest point on segment is between B and C; */
/*    Use perpendicular distance formula.  */
distSquare    =    cax * bay  -  cay * bax ;
distSquare    =    distSquare * distSquare / bcSquare ;
/* Note that if bcSquare be zero, the first
of the three branches will be selected,
so division by zero will not occur here. */
}
}

if ( distSquare > *distMaxSquare )
{
outindex  =  index ;
*distMaxSquare  =  distSquare ;
}
}
/*
Note that in the inner loop above, if we follow
the most common path where the perpendicular
distance is the one to calculate, then for each
intermediate vertex the float operation count is
1 divide, 7 multiplies, 5 subtracts, 1 add, and 2 compares.
*/

return outindex ;
}

Sharon Kazemi
Visiting Scholar/GIS Analyst
Geographic Information Science Center
412 Wurster Hall
University of California Berkeley
Berkeley, CA 94720-1820
Phone: +1-510-642-2812
Fax: +1-510-643-3412
Email: sharonk at gisc.berkeley.edu
http://www.gisc.berkeley.edu/

-----Original Message-----
From: baypiggies-bounces at python.org
[mailto:baypiggies-bounces at python.org]On Behalf Of
baypiggies-request at python.org
Sent: Thursday, December 14, 2006 3:00 AM
To: baypiggies at python.org
Subject: Baypiggies Digest, Vol 14, Issue 16

Send Baypiggies mailing list submissions to
baypiggies at python.org

To subscribe or unsubscribe via the World Wide Web, visit
http://mail.python.org/mailman/listinfo/baypiggies
or, via email, send a message with subject or body 'help' to
baypiggies-request at python.org

You can reach the person managing the list at
baypiggies-owner at python.org

than "Re: Contents of Baypiggies digest..."

Today's Topics:

1. Re:  Dec. 14 Meeting "Programming Productivity: What	Really
Matters?" (Anna Ravenscroft)
2. Re:  Dec. 14 Meeting "Programming Productivity: What	Really
Matters?" (Shannon -jj Behrens)
3. Re:  Dec. 14 Meeting "Programming Productivity: What Really
Matters?" (Dennis Reinhardt)
4. Re:  Dec. 14 Meeting "Programming Productivity: What	Really
Matters?" (Anna Ravenscroft)
5. Re:  Dec. 14 Meeting "Programming Productivity: What	Really
Matters?" (Marilyn Davis)
6. Re:  Dec. 14 Meeting "Programming Productivity: What	Really
Matters?" (Anna Ravenscroft)
7. Re:  Dec. 14 Meeting "Programming Productivity: What	Really
Matters?" (Alex Martelli)

----------------------------------------------------------------------

Message: 1
Date: Wed, 13 Dec 2006 17:22:03 -0800
From: "Anna Ravenscroft" <annaraven at gmail.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What	Really Matters?"
To: "Mike Cheponis" <mac at wireless.com>
Cc: Python <baypiggies at python.org>
Message-ID:
<cb361a610612131722v7c6fef90ha4504a604b9b5246 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

On 12/13/06, Mike Cheponis <mac at wireless.com> wrote:
> "Social Time" is really just "Random Mapping".
>
> So, if nobody stands up during "Mapping" you get all "Social Time".  Also,
those that don't "map" are, by default, in the "Social" mapping...
>
> Don't worry, the meetings aren't nearly as formal as our discussions
>
> -Mike

I've been to the meetings. Social TIme != mapping.

I don't have time or energy to wait for the formal "mapping" to get
over with before I can socialize with people. I have a final tomorrow
and expect to be pretty exhausted and wanting to go to bed early. I
was looking forward to some generic, informal socializing.

OR can we have some freeform socializing BEFORE the official part of
the meeting - that way those who want (and have the energy) to do the
mapping can stay for that?

Anna

------------------------------

Message: 2
Date: Wed, 13 Dec 2006 18:09:35 -0800
From: "Shannon -jj Behrens" <jjinux at gmail.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What	Really Matters?"
To: "Anna Ravenscroft" <annaraven at gmail.com>
Cc: Python <baypiggies at python.org>, Mike Cheponis <mac at wireless.com>
Message-ID:
<c41f67b90612131809q37612254i1007ffe3e5fb7667 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

On 12/13/06, Anna Ravenscroft <annaraven at gmail.com> wrote:
> On 12/13/06, Mike Cheponis <mac at wireless.com> wrote:
> > "Social Time" is really just "Random Mapping".
> >
> > So, if nobody stands up during "Mapping" you get all "Social Time".
Also, those that don't "map" are, by default, in the "Social" mapping...
> >
> > Don't worry, the meetings aren't nearly as formal as our discussions
> >
> > -Mike
>
> I've been to the meetings. Social TIme != mapping.
>
> I don't have time or energy to wait for the formal "mapping" to get
> over with before I can socialize with people. I have a final tomorrow
> and expect to be pretty exhausted and wanting to go to bed early. I
> was looking forward to some generic, informal socializing.
>
> OR can we have some freeform socializing BEFORE the official part of
> the meeting - that way those who want (and have the energy) to do the
> mapping can stay for that?

It sounds like we have a pretty vocal contingent of people who want 30
minutes of informal socializing followed by an hour for the actual
talk.  That's fine by me.

-jj

--
http://jjinux.blogspot.com/

------------------------------

Message: 3
Date: Wed, 13 Dec 2006 18:17:51 -0800
From: Dennis Reinhardt <DennisR at dair.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What Really Matters?"
To: Python <baypiggies at python.org>
Message-ID: <5.1.0.14.0.20061213173953.023a51d0 at localhost>
Content-Type: text/plain; charset="us-ascii"; format=flowed

At 05:22 PM 12/13/2006, Anna Ravenscroft wrote:

>OR can we have some freeform socializing BEFORE the official part of
>the meeting -

Anna,

I have regularly attended the pre-dinner meetings Brian has organized (at
least the ones at IronPort).  They may well be the social time you are
looking for and in the time frame you ask for.

If one looks at the agenda template we have had this year, it looks like:

7:00 - 7:30 unstructured pre-meeting
7:30 - 9:00 meeting program

Nothing has prevented people from socializing in the 7:00 - 7:30
pre-meeting time frame.  By my observation, not that much socialization
gets done then.  Whatever limiters there are in socializing in the 7:00 to
7:30 time frame are likely to affect tomorrow's meeting as well.  Suppose
we revise the schedule to read

7:00 - x:yz social
x:yz - 9:00 program

I don't think moving the 7:00 earlier is that easy without checking the
room schedule or someone from Google taking responsibility for being
there.  Could happen but the fact is that we already have an time preceding
every meeting where completely unstructured socialization is possible.

Suppose we set x:yz to 7:40, allowing JJ's presentation to take the entire
80 minutes.  IMO, we have run that experiment as well and it is called
starting the meeting 10 minutes late.  I have not seen the demand for that.

The major alternative here is set x:yz to 9:00 and shut down JJ's talk
entirely.  My sense is that JJ has a great talk planned and while meet and
greet was preferred to no meeting at all, JJ's unabridged talk and
free-for-all discussion (i.e. what passes for socialization for some of us)
is a preferred use of the time available.

If you have not attended the pre-meeting dinners, I can recommend them as a
good way to socialize.

Dennis

---------------------------------
| Dennis    | DennisR at dair.com    |
| Reinhardt | http://www.dair.com |
---------------------------------

------------------------------

Message: 4
Date: Wed, 13 Dec 2006 18:57:16 -0800
From: "Anna Ravenscroft" <annaraven at gmail.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What	Really Matters?"
To: "Dennis Reinhardt" <DennisR at dair.com>
Cc: Python <baypiggies at python.org>
Message-ID:
<cb361a610612131857r7a3a18c5u20344f1f13398cb7 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Okay - let me describe what I mean by "socializing".

To me, socializing is not:

"mapping" (mapping is a formal structure grouping up people and the
grouping process seems to take forever.)

dinner (getting stuck next to someone I've never met and have nothing
in common with and having to make smalltalk with them for the next
hour is my idea of hell.)

extending the Q&A session after a presentation - leaving those of us
who have heard enough stuck with the choice of being *rude* or waiting
patiently in hopes that eventually we can stand up and go talk to
someone we have been wanting to talk with - which usually happens
about 5 minutes before we're kicked out of the room...

Milling around in the lobby of google waiting to fill out a badge and
be shepherded up to a room just in time for the presentation to start.
Not everyone is there, and we're usually rather distracted.

Socializing - what I'm asking for - is a chance to talk to people, _by
choice_ -- not by enforced proximity or structured format -- including
the chance to walk around and talk to more than one person. Having
snacks and beverages is nice.

I would like a chance to socialize.

Cordially,
Anna

------------------------------

Message: 5
Date: Wed, 13 Dec 2006 21:56:50 -0800
From: Marilyn Davis <marilyn at deliberate.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What	Really Matters?"
To: baypiggies at python.org
Message-ID: <20061214055653.9296D1E4006 at bag.python.org>
Content-Type: text/plain; charset="ISO-8859-1"

----- On Wednesday, December 13, 2006 annaraven at gmail.com wrote:

> Okay - let me describe what I mean by "socializing".
>
> To me, socializing is not:
>
> "mapping" (mapping is a formal structure grouping up people and the
> grouping process seems to take forever.)
>
> dinner (getting stuck next to someone I've never met and have nothing
> in common with and having to make smalltalk with them for the next
> hour is my idea of hell.)
>
> extending the Q&A session after a presentation - leaving those of us
> who have heard enough stuck with the choice of being *rude* or waiting
> patiently in hopes that eventually we can stand up and go talk to
> someone we have been wanting to talk with - which usually happens
> about 5 minutes before we're kicked out of the room...
>
> Milling around in the lobby of google waiting to fill out a badge and
> be shepherded up to a room just in time for the presentation to start.
> Not everyone is there, and we're usually rather distracted.

Yeh.  We are not allowed in early, as far as I know.  The lobby is not the
right thing.  We're not there yet.

Google is providing snacks?  How do the snacks get snacked upon if the
program starts when people first arrive?

So far, it seems to me, this little disagreement we are having is divided
against the gender axis.  Just commenting, I don't have any judgement or
conclusion about it, I just find it interesting.

I'm looking forward to whatever part I'm able to get to.

Marilyn

>
> Socializing - what I'm asking for - is a chance to talk to people, _by
> choice_ -- not by enforced proximity or structured format -- including
> the chance to walk around and talk to more than one person. Having
> snacks and beverages is nice.
>
> I would like a chance to socialize.
>
> Cordially,
> Anna
> _______________________________________________
> Baypiggies mailing list
> Baypiggies at python.org
> http://mail.python.org/mailman/listinfo/baypiggies

------------------------------

Message: 6
Date: Wed, 13 Dec 2006 22:06:25 -0800
From: "Anna Ravenscroft" <annaraven at gmail.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What	Really Matters?"
To: "Marilyn Davis" <marilyn at deliberate.com>
Cc: baypiggies at python.org
Message-ID:
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

On 12/13/06, Marilyn Davis <marilyn at deliberate.com> wrote:
>
> ----- On Wednesday, December 13, 2006 annaraven at gmail.com wrote:
>
> Yeh.  We are not allowed in early, as far as I know.  The lobby is not the
right thing.  We're not there yet.
>
> Google is providing snacks?  How do the snacks get snacked upon if the
program starts when people first arrive?
>
> So far, it seems to me, this little disagreement we are having is divided
against the gender axis.  Just commenting, I don't have any judgement or
conclusion about it, I just find it interesting.
>

The main disagreement I really see is a different definition of
socializing. Which is why I posted my definition so we could have the
discussion be more clear. Some people apparently consider the lobby
milling or the mapping to be socializing. That's okay for them to have
that definition - but it's not what I was asking for when I asked for
a chance to socialize, and so I figured it would be easier to discuss
if we had a definition on the table. (whether for people to agree or
disagree with - at least we're not assuming what it means.) Once we
agree on what it means to "socialize" we can agree on whether we want
a socializing time.

> I'm looking forward to whatever part I'm able to get to.

Me too. I'm sure the presentation will be great. I hope I get a chance
to chat with you. I haven't had much opportunity for that.

--
cordially,
Anna
--
It is fate, but call it Italy if it pleases you, Vicar!

------------------------------

Message: 7
Date: Wed, 13 Dec 2006 22:54:46 -0800
From: "Alex Martelli" <aleax at google.com>
Subject: Re: [Baypiggies] Dec. 14 Meeting "Programming Productivity:
What	Really Matters?"
To: "Marilyn Davis" <marilyn at deliberate.com>
Cc: baypiggies at python.org
Message-ID:
<55dc209b0612132254y6ea79c01h257c2d515fbe6fd6 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

On 12/13/06, Marilyn Davis <marilyn at deliberate.com> wrote:
...
> So far, it seems to me, this little disagreement we are having is divided
against the gender axis.  Just commenting, I don't have any judgement or
conclusion about it, I just find it interesting.

OK, so let me weigh in...: I _know_ I'm going to be seriously tired
tomorrow night, except (perhaps, with some luck:-) very early on, as
I'm going to have a long and intense workday before it; so, from my
subjective POV the tradeoff is -- am I going to be dozing at the end
of the presentation (if we have socialtime _before_), or am I going to
be dozing through socialtime (if we have it _after_).  Overall, I'd
(marginally) prefer the first option.

Sorry to spoil the nice gender-axis alignment, but then, I tend to do
that (I guess that, according to our great State's great governor,
this makes me a "girlyman":-).

> I'm looking forward to whatever part I'm able to get to.

Likewise, except s/get to/be awake for/ :-).

Alex

------------------------------

_______________________________________________
Baypiggies mailing list
Baypiggies at python.org
http://mail.python.org/mailman/listinfo/baypiggies

End of Baypiggies Digest, Vol 14, Issue 16
******************************************

```