如何将普通坐标转为经纬度坐标

WindowsAPI 2003-06-26 06:59:38
我在用mapobjects组件开发GIS程序时发现该组件只提供了ToMapPoint方法将当前鼠标点转换为普通坐标的,而没有提供将当前鼠标点转换为经纬度坐标的方法。请各位高手帮忙解决,谢谢!!
...全文
1173 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WindowsAPI 2003-09-28
  • 打赏
  • 举报
回复
对不起,各位。最近很少上来看,所以没有及时结贴。
ANewGISser 2003-09-02
  • 打赏
  • 举报
回复
我记得Mo有鼠标点转成地理坐标的方法,好像就是FromMapPoint,你再看看吧。
karach 2003-08-29
  • 打赏
  • 举报
回复
发贴要及时结贴,不然我没什么激情!!
Hewin 2003-08-29
  • 打赏
  • 举报
回复
都幾天了,還沒結帖! 樓主你問題的問題不完整!
GIS里面算坐標需要如下幾個參數:Extent 屏幕表示經偉度的範圍 也就是LeftTop and BottomRight 這兩點所表示的經偉度! 還有就是Zoom 地圖的比例,這兩個參數是不能少的.
在小的地理範圍里(如:一個城市),經偉度坐標可以把它當做為平面直角坐標來處里.如果是這樣的話那你的問題也就是一般高中生能解決的問題了! 如果你的地理範圍很大,如全中國,那你就得費點心思了!
我以上的那些代碼是把它當做是小的地理範圍
Hewin 2003-08-22
  • 打赏
  • 举报
回复
function ScreenToMap(Zoom:Double;Margin:TPoint;ViewportOffset:TPoint;Extent:TExtent; const _ptg : TPoint ) : TGIS_Point ;
begin
if FZoom <= 0 then begin
Result := GisPoint(0, 0 ) ;
SysUtils.Abort ;
end ;

Result.x := Extent.XMin +
( (_ptg.x - ( Margin.X + ViewportOffset.X ) ) / Zoom +
Viewport.X
) ;
Result.y := FExtent.Ymax -
( (_ptg.y - ( Margin.Y + ViewportOffset.Y ) ) / Zoom +
Viewport.Y
) ;
end ;
WindowsAPI 2003-07-21
  • 打赏
  • 举报
回复
请单独建立一个单元文件,如:SQLServerUnit
然后在interface部分写:

function StartSQLServer(szErrorMsg:string):Boolean;


在implementation部分写:

const
SERVICE_UNKNOWN =0;

type
enumSQLSCMCommands=(SQLSCMCmd_STOP,SQLSCMCmd_PAUSE,SQLSCMCmd_START,SQLSCMCmd_CONTINUE);


const
wn95scm='w95scm.dll';
// Function prototypes
function SQLSCMLocalServiceControlA(lpszSvc:LPSTR;iCommand:integer;
pdwErr:LPDWORD;iCount:integer;lpStartParameter:Pointer):BOOL;stdcall
external wn95scm name 'SQLSCMLocalServiceControlA';
function SQLSCMLocalServiceControlW(lpszSvc:LPWSTR;iCommand:integer;
pdwErr:LPDWORD;iCount:integer;lpStartParameter:Pointer):BOOL;stdcall
external wn95scm name 'SQLSCMLocalServiceControlW';
function SQLSCMGetLocalServiceStateA(lpszSvc:LPSTR;pdwErr:LPDWORD):DWORD;stdcall
external wn95scm name 'SQLSCMGetLocalServiceStateA';
function SQLSCMGetLocalServiceStateW(pwszSvc:LPWSTR;pdwErr:LPDWORD):DWORD;stdcall
external wn95scm name 'SQLSCMGetLocalServiceStateW';

{$ifdef UNICODE}
function SQLSCMLocalServiceControl(lpszSvc:LPSTR;iCommand:integer;
pdwErr:LPDWORD;iCount:integer;lpStartParameter:Pointer):BOOL;stdcall
external wn95scm name 'SQLSCMLocalServiceControlW';
function SQLSCMGetLocalServiceState(pwszSvc:LPWSTR;pdwErr:LPDWORD):DWORD;stdcall
external wn95scm name 'SQLSCMGetLocalServiceStateW';
{$else}
function SQLSCMLocalServiceControl(lpszSvc:LPSTR;iCommand:integer;
pdwErr:LPDWORD;iCount:integer;lpStartParameter:Pointer):BOOL;stdcall
external wn95scm name 'SQLSCMLocalServiceControlA';
function SQLSCMGetLocalServiceState(lpszSvc:LPSTR;pdwErr:LPDWORD):DWORD;stdcall
external wn95scm name 'SQLSCMGetLocalServiceStateA';
{$endif} // !UNICODE

function StartSQLServer(szErrorMsg:string):Boolean;
var
szService:LPSTR;
dwErr:PDWORD;
dwServiceState:DWORD;
bControlSuccessful:BOOL;
lsStr:string;
begin
result:=false;

szService := 'MSSQLServer';

bControlSuccessful:=TRUE;
dwServiceState := SQLSCMGetLocalServiceState(szService, dwErr);
while ((dwServiceState <>0) and (bControlSuccessful = TRUE))do
begin
if (dwServiceState = SERVICE_RUNNING) then
break;
case dwServiceState of
SERVICE_PAUSED:begin // Paused, so continue.
bControlSuccessful := SQLSCMLocalServiceControl(szService,
Ord(SQLSCMCmd_CONTINUE),dwErr, 0, nil);
end;
SERVICE_STOPPED:begin // Stopped, start service.
bControlSuccessful := SQLSCMLocalServiceControl(szService,
Ord(SQLSCMCmd_START), dwErr, 0, nil);
end;
else // Error if state is 0 otherwise state is changing.
begin
if (dwServiceState = 0) then
begin // Error. Return failure.
StrPCopy(PChar(dwErr),lsStr);
szErrorMsg:='Error '+lsStr+' on attempt to determine service state.';
exit;
end;
end;
end;
Sleep(5);
dwServiceState := SQLSCMGetLocalServiceState(szService, dwErr);
end;
if (bControlSuccessful) then
begin
StrPCopy(PChar(dwErr),lsStr);
szErrorMsg:='Error '+lsStr+' returned on attempt to change service state.';
end;
result:=bControlSuccessful;
end;


以上是启动SQL Server 的服务,至于停止服务可以根据以上代码自己编写,很容易实现的。
ollea 2003-06-26
  • 打赏
  • 举报
回复
你看看《控制测量》,我记得里面有将地球坐标转为普通坐标的方法。希望顺利

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧