2 votos

Dibujar un círculo de un área determinada en MapInfo

Me gustaría dibujar un círculo en MapInfo de exactamente 0,9Ha de superficie.

Lo he hecho calculando el radio correspondiente, dibujando un círculo de tamaño arbitrario, haciendo doble clic sobre él y luego introduciendo el radio. ¿Existe una herramienta para hacerlo?

Si no hay una herramienta para esto entonces voy a hacer una, así que tengo otra pregunta: ¿cómo se obtienen mediante programación las coordenadas geográficas de un clic del ratón?

6voto

mleykamp Puntos 491

Simplemente demande el método CreateCircle en la ventana MapBasic, o simplemente póngalo detrás de un diálogo rápido y sucio con todas las matemáticas elaboradas detrás de la escena

Crear un círculo en MapBasic

CreateCircle( x, y, radius )  

x is a float value of the circle's center. 
y is a float value of the circle's center. 
radius is a float value, indicating the circle radius. 

En cuanto a la captura de un clic del ratón, lea el Manual de MapBasic especialmente "Crear declaración ButtonPad", pero usted tendría que escribir algún código personalizado para esto, un poco como esto:

Utilizar la función CommandInfo() con el CMD_INFO_X y CMD_INFO_Y y podrá recuperar la información del punto en el que pulse

desde aquí, puedes abrir un diálogo/código, con el que puedes añadir la funcionalidad de createCircle Ej.

Include "mapbasic.def"
Include "icons.def"

Declare Sub Main
Declare Sub get_map_click

Sub Main
  Alter ButtonPad "Tools" 
Add 
Separator 
ToolButton 
Icon MI_ICON_CROSSHAIR 
HelpMsg "Click on map" 
Cursor MI_CURSOR_CROSSHAIR 
DrawMode DM_CUSTOM_POINT 
Calling get_map_click 
Show

End Sub

Sub get_map_click 
    Note "x:" + Round(CommandInfo(CMD_INFO_X), 0.1) + Chr$(10) + "y:" + Round(CommandInfo(CMD_INFO_Y), 0.1) 
    'add code to create a circle to whatever layer you want
End Sub 

Tendrías que pulsar el botón cada vez que quisieras capturar un punto.

EDITAR

Por favor, tenga en cuenta que no he escrito código MapBasic desde hace un par de tres años, así que por favor, eche un vistazo a la guía de usuario/referencia antes de comprometer esto a los datos de producción o cualquier tontería por el estilo. Estoy seguro de que así es como lo harías, pero asegúrate primero por favor.

3voto

Ethan Post Puntos 1369

Tal vez pueda utilizar la herramienta de MapCAD Círculo desde el Centro y Radio/Diametro para esto. Para recuperar las coordenadas de forma programada puedes utilizar la función CommandInfo() de MapBasic.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X