Buffering a User Defined Point in ArcIMS

Telling ArcIMS to buffer a user-defined point, such as a mouse click or an address from the master address table, is a bit trickier than one might initially suspect, as Amy Weeks found out. She figured it out, though, and was kind enough to share the solution in this month’s PC News.

The trick to retrieving attributes is the MULTIPOINT tag. Using your distance and x and y coordinates in a GET_FEATURES request will return the information you’re seeking:

<?xml version=’1.0’ encoding=’UTF-8’?>
<ARCXML version=’1.1’>
<REQUEST>
<GET_FEATURES outputmode=’xml’ globalenvelope=’true’ attributes=’false’ compact=’true’ geometry=’false’ envelope=’false’>
<LAYER id=’infousa’ />
<SPATIALQUERY subfields=’#SHAPE#’>
<SPATIALFILTER relation=’area_intersection’>
<BUFFER distance=’1’ bufferunits=’miles’ />
<MULTIPOINT>
<POINT x=’1461887’ y=’534696’ />
</MULTIPOINT>
</SPATIALFILTER&
gt;
</SPATIALQUERY>
</GET_FEATURES>
</REQUEST>
</ARCXML>

Drawing the buffer on the map is another story entirely. There are sin and cos geometric functions and lines of code like CirX = x + (distance * Math.Cos(increment * Math.PI / 180)), and the PC simply does not believe in such things. Voodoo, says the PC. Amy Weeks, though, would be more than happy to help you draw this user-defined buffer on the screen. She believes in voodoo. She’s from California.