再问一遍,在MO中可以动态改变地图的投影系吗?(100分)

  • 主题发起人 主题发起人 Sonic_Ben
  • 开始时间 开始时间
S

Sonic_Ben

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经是第三次问这个问题了,可是老得不到准确得回答:(
我想在MO中改变地图的投影,比如说莫卡托,高斯-克力格等等,但不知道怎么办,哪位
大侠能帮帮小弟!!
 
问坛主吧,他是专家
 
今天晚上回去装一个MO,研究一下再告诉你。:)
 
如果你用的是mo2,可以翻译一个它的帮助中的PROJECTS类的描述。
我觉的它是关于坐标的。(我的E文不好);
 
我已经借到MO2.1了,今天回去安装。
 
谢了先!
等候回答……
 
有误.应该是PROJECTION对象集.
而且在DELPHI的头文件MAPOBJECTS2_TLB中有关于
坐标系的CONST
 
那具体怎么实现呢?
你能写个DEMO吗?
 
{假设:
(1).输入图层为经纬度坐标;
(2).变换为Lambert Conformal Conic投影,参数:
中央子午线:110度
参考纬度: 10度
Standard Parallel1: 25度;
Standard Parallel2: 47度;
FalseEasting: 0;
FalseNorthing: 0;
单位为: 米;

}
procedure TFormAEPBrowser.SetCurrentProjection;
var
ToPCS : IMoProjCoordSys;
ToGCS : IMoGeoCoordSys;
ToDims : IMOUnit;
ToProjection : IMoProjection;
FromGCS : IMoGeoCoordSys;
aMapLayer : IMoMapLayer;
i,n : Integer;

begin

//
//创建各对象
//
ToPCS :=
IMoProjCoordSys(CreateOleObject('MapObjects2.ProjCoordSys'));

ToProjection :=
IMoProjection(CreateOleObject('MapObjects2.Projection'));

ToDims := IMoUnit(CreateOleObject('MapObjects2.Unit'));


ToGCS := IMoGeoCoordSys(CreateOleObject('MapObjects2.GeoCoordSys'));

//
//设置投影系统参数
//
ToProjection.Type_:= moProjection_LambertConformalConic;

ToGCS.Type_ := moGeoCS_WGS1984;

ToDims.Type_ := moUnit_Meter;
//
//设置投影参数
//
ToPCS.SetParameter(moParm_CentralMeridian,110);
ToPCS.SetParameter(moParm_OriginLatitude,10);
ToPCS.Setparameter(moParm_StandardParallel1,25);
ToPCS.Setparameter(moParm_StandardParallel2,47);
ToPCS.SetParameter(moParm_FalseEasting,0);
ToPCS.SetParameter(moParm_FalseNorthing,0);
ToPCS.SetParameter(moParm_ScaleFactor,1.0);

ToPCS.Projection := FromProjection;
ToPCS.GeoCoordSys := FromGCS;
ToPCS.Unit_:= FromDims;
//
//如果改为:
// ToPCS.Projection.Type_ := moProjection_LambertConformalConic;
//变换时将出错!瞎转
//

//
//设置当前坐标系参数
//
FromGCS := IMoGeoCoordSys(CreateOleObject('MapObjects2.GeoCoordSys'));
FromGCS.Type_ := moGeoCS_WGS1984;

//
//设置各图层当前坐标系
//
n := Map1.Layers.Count;
for i:=0 to (n-1)do

begin

aMapLayer := IMOMaplayer(Map1._Layers.Item(i));
aMapLayer.CoordinateSystem := FromGCS;
end;

//
//设置所需投影
//
Map1.CoordinateSystem := ToPCS;

//自动刷新

end;

 
to 黑天鹅

ToPCS.Projection := FromProjection;
ToPCS.GeoCoordSys := FromGCS;
ToPCS.Unit_:= FromDims;

FromProjection,FromDims没有设置啊?
这三句是什么意思啊?
能给我一个DEMO吗?
sonicben@sina.com
 
呵呵,手误。should be
ToPCS.Projection := ToProjection;
ToPCS.GeoCoordSys := ToGCS;
ToPCS.Unit_:= ToDims;

Demo project 发到哪?
 
呵呵,100分不多! 我还有许多好东西!
你可以再出几道题, 比如怎么读入 ArcExplorer Project file.(*.aep),
Delphi 可以用的Legend等。不过分得多点,那东东是个大家伙。我作了一组VCL,
Legend支持点、线、面的 SingleSymbol Renderer,ValueMap Renderer,ClassBreaks Renderer,
LabelRenderer,在Classbreaks和ValueMap Renderer中还加入Custom Palettes选项...
我给这组VCL取名为: MapObjects2.0 assistant Suite(MO2AS)

给你发去的Projection Demo中已经有TMo2ASAEPFile.

 
我也要:
tanyonggui@263.net
谢谢
另:大侠能不能帮我看看我的问题:如何自定义填充区域?
 
To 吕雪松:
是否能共享您的 MO 2.1 ?
lanny@jxeinet.com
 
to 黑天鹅:
分不是问题,我会专门给你开个问题让你拿分的。再加300分怎么样?
^_^,有点像黑社会讨价还价了。
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部