Mais

Desenhar um círculo de uma determinada área no MapInfo

Desenhar um círculo de uma determinada área no MapInfo


Gostaria de desenhar um círculo no MapInfo com exatamente 0,9Ha de área.

Eu fiz isso calculando o raio correspondente, desenhando um círculo de tamanho arbitrário, clicando duas vezes nele e inserindo o raio. Existe uma ferramenta para fazer isso?

Se não houver uma ferramenta para isso, farei uma, então tenho outra pergunta: como você consegue programaticamente as coordenadas geográficas de um clique do mouse?


Basta processar o método CreateCircle na janela MapBasic ou apenas colocá-lo atrás de um diálogo rápido e sujo com toda a matemática resolvida nos bastidores

Crie um círculo no MapBasic

CreateCircle (x, y, radius) x é um valor flutuante do centro do círculo. y é um valor flutuante do centro do círculo. raio é um valor flutuante, indicando o raio do círculo.

Quanto à captura de um clique do mouse, leia o Manual do MapBasic especialmente "Criar instrução do ButtonPad", mas você teria que escrever algum código personalizado para isso, um pouco assim:

Use a função CommandInfo () com os parâmetros CMD_INFO_X e CMD_INFO_Y e você pode recuperar as informações a partir do ponto em que clicar

a partir daqui, você pode abrir um diálogo / código, com o qual você pode adicionar a funcionalidade Ex do createCircle.

Incluir "mapbasic.def" Incluir "icons.def" Declare Sub Main Declare Sub get_map_click Sub Main Alter ButtonPad "Ferramentas" Adicionar Separator ToolButton Icon MI_ICON_CROSSHAIR HelpMsg "Clique no mapa" Cursor MI_CURSOR_CROSSHAIR DrawMode DM_CUSTOM_POINT Submap Submap get_click Mostrar Nota x get_click : "+ Round (CommandInfo (CMD_INFO_X), 0.1) + Chr $ (10) +" y: "+ Round (CommandInfo (CMD_INFO_Y), 0.1) 'adicione o código para criar um círculo em qualquer camada que você deseja End Sub

Você teria que clicar no botão toda vez que quisesse capturar um ponto.

EDITAR

Observe que não escrevo o código MapBasic há três anos, portanto, dê uma olhada no guia do usuário / referência antes de enviá-lo para os dados de produção ou qualquer coisa parecida com isso. Tenho certeza de que é assim que você faria, mas certifique-se primeiro, por favor.


Talvez você possa usar a ferramenta Círculo de Centro e Raio / Diâmetro do MapCAD para isso. Para recuperar coordenadas programaticamente, você pode usar a função CommandInfo () no MapBasic.


Assista o vídeo: 8 MapInfo Pro - Creating Features using CSV coordinate File