×

ddmap

图中图显示?苏州地图的网哪个比较好用

admin admin 发表于2023-03-11 19:12:28 浏览33 评论0

抢沙发发表评论

本文目录

图中图显示

通过图中图的显示,即逐层细化图层,它使用户得以执行逐层细化分析和探测。如果地图包含逐层细化图层,用户就可以通过鼠标指向和单击地图的某个区域得到该区域更详细的信息。逐层细化图层所提供的直观、易用的界面使用户得以通过指定和单击来探测数据。

逐层细化应用程序需要相当数量的设置以及精心地准备。其主要开发步骤总结如下:

1) 获取用来建立多层次逐层细化图层的多种表。可以使用 MapInfo Professional 创建表,或者从 MapInfo 公司或第三方供应商处购买表 ( Raman et al. ,2003) 。

2) 使用特殊的列和特殊的元数据创建新的空逐层细化表 ( tab 文件) 。元数据为每一张成员表分配层次名,并且标识成员表中的重要列: ID 列和标题列。

3) 把逐层细化表加入地图 ( 例如,把逐层细化表加入所使用的 Geoset ( s) 中,或者通过像 Layers. Add 这样的方法,把逐层细化表添加到地图中) 。

4) 添加用户接口元素 ( 例如工具栏按钮) 到应用程序中,以便用户选择逐层细化工具并单击地图来进行细化。

向应用程序添加代码来响应用户对逐层细化工具的使用 ( 即: 编写层次结构管理器) 。此代码需要检测用户所选择的图元; 确定替换图元的子图元; 并调用一些方法( DrilldownRemoveFeatures,DrilldownAddFeatures) 来展开或者收缩地图图元。

要创建逐层细化图层,需要提供由两个或更多 MapInfo 表组成的表集合。特别地需要: 逐层细化图层的每一层次的详细信息都需要一张 MapInfo 表,这些被称为成员表; 额外会有包含特殊元数据的空表来描述成员表,它被称为逐层细化表。

例如,“逐层细化表示例”包含如 “\ DDMap \ ComponentMaps \ One \ LevelID”和“\ DDMap \ ComponentMaps \ Twox \ LevelID”这样的关键字层次结构。请注意 DDMap、ComponentMaps 和 LevelID 是关键字层次结构标准的、必需的部分,而 One 和 Twox 是可自定义的。可使用任何喜欢的关键字名代替 One、Twox、Twoxx 等; 那些关键字名只是用来区分每个成员表的关键字集。如图 6. 21 即为图中图显示。

图 6. 21 图中图窗口

具体实现参考下面详细代码:

Dim m_Layer As Layer

Dim m_Fea As MapXLib. Feature

Private Sub form_Load( )

Set m_Layer = Map2. Layers. CreateLayer( “ Rectlayer“ )

End Sub

Private Sub Map1_MapViewChanged( )

Dim tempFea As MapXLib. Feature

Dim tempPnts As MapXLib. Points

Dim tempStyle As MapXLib. Style

If m_Layer. AllFeatures. Count = 0 Then

Set tempStyle = New MapXLib. Style

tempStyle. RegionPattern = miPatternNoFill

tempStyle. RegionBorderColor = 255

tempStyle. RegionBorderWidth = 2

Set tempFea = Map2. FeatureFactory. CreateRegion( Map1. Bounds,tempStyle)

Set m_Fea = m_Layer. AddFeature( tempFea)

Else

With m_Fea. Parts. Item( 1)

. RemoveAll

. AddXY Map1. Bounds. XMin,Map1. Bounds. YMin

. AddXY Map1. Bounds. XMax,Map1. Bounds. YMin

. AddXY Map1. Bounds. XMax,Map1. Bounds. YMax

. AddXY Map1. Bounds. XMin,Map1. Bounds. YMax

End With

m_Fea. Update

End If

End Sub

Private Sub Map2_MouseDown( Button As Integer,Shift As Integer,X As Single,Y As Single)

Dim MapX As Double

Dim MapY As Double

Map2. ConvertCoord X,Y,MapX,MapY,miScreenToMap

Map1. CenterX = MapX

Map1. CenterY = MapY

End Sub

苏州地图的网哪个比较好用

http://suzhou.ddmap.com,丁丁地图,以前我都用的是百度的地图,相比起来,这个丁丁地图超强的门牌号查询(大家可以试试查查自家的门牌号是否在正确的位置),交叉路口查询,减切了我在网上看到**路**号的心仪小店但却找不到的烦恼,更重要的是,他能把电子地图与公交路线很好的吻和起来,在那里上车有上车地图定位,在那里中转有中转地图定位,在那里下车也有下车地图定位,非常方便,不仅如此,在丁丁地图还能查找到你所在位置周围的好吃的,好玩的.综合的来说,这个丁丁地图好处多多呀,所以向大家强列推荐啦.(对了,对于有钱的MMGG来说,还能查到自驾车的准确路线哟,左转,右转,直行,过高架,呵呵,免费的导航仪)

熟悉上海公交路线的进

线路1:从上海火车站出发,乘坐地铁三号线(江杨北路-上海南站),在延安西路换乘757路(天山支路古北路-莲花路地铁站),抵达虹许路. 约9.7公里
线路2:从上海火车站出发,乘坐地铁一号线(莘庄-共富新村),在莲花路地铁站换乘757路(天山支路古北路-莲花路地铁站),抵达虹许路. 约27.93公里
线路3:从上海火车站出发,乘坐941路(虹桥机场-上海火车站),抵达虹许路. 约12.02公里
线路4:从上海火车站出发,乘坐地铁三号线(江杨北路-上海南站),在虹桥路地铁站换乘149路(虹桥路凯旋路-平吉新村),抵达古羊路. 约14.8公里
线路5:从上海火车站出发,乘坐地铁四号线(蓝村路-大木桥路),在虹桥路地铁站换乘149路(虹桥路凯旋路-平吉新村),抵达古羊路. 约14.8公里
线路7:从上海火车站出发,乘坐地铁三号线(江杨北路-上海南站),在中山公园地铁站换乘地铁四号线(蓝村路-大木桥路),在虹桥路地铁站换乘149路(虹桥路凯旋路-平吉新村),抵达古羊路. 约14.8公里
线路8:从上海火车站出发,乘坐地铁三号线(江杨北路-上海南站),在中山公园地铁站换乘96路(中山公园地铁站-西藏南路),在定西路换乘936路(外高桥保税区-龙柏新村),抵达虹许路. 约13.27公里
线路9:从上海火车站出发,乘坐地铁四号线(蓝村路-大木桥路),在中山公园地铁站换乘96路(中山公园地铁站-西藏南路),在定西路换乘936路(外高桥保税区-龙柏新村),抵达虹许路. 约13.27公里
线路10:从上海火车站出发,乘坐地铁一号线(莘庄-共富新村),在上海体育馆换乘地铁四号线(蓝村路-大木桥路),在虹桥路地铁站换乘149路(虹桥路凯旋路-平吉新村),抵达古羊路. 约18.29公里
百度地图上有的查,还有地图,很方便。

浦卫线 路线

浦卫线石化汽车站-》山阳-》朱行-》亭林-》庄行-》南桥汽车站-》齐贤-》泰日-》航头-》下沙-》周浦-》康桥-》上海农产品市场-》莲溪-》北蔡-》沪南路芳华路(临时站)-》易初莲花-》浦建路浦东南路-》龙阳路浦东南路 http://www.ddmap.com/map/21/bus-%C6%D6%CE%C0%CF%DF.htm

为什么现在丁丁地图查交通路线查不到了

可以查询的,我就是用http://www.ddmap.com/查询的啊:
你住在中山北路普善路?(我也是,我住在中山北路814弄协和公寓,邻居啊,呵呵)
从中山北路普善路到肇嘉浜路高安路青松城大酒店6号门:
线路1
从地铁一号线(中山北路站)上车至(徐家汇站)下车
转712路(徐家汇站)上车至(东安路站)下车
-----------------------------------------------------------
线路2
从地铁一号线(中山北路站)上车至(徐家汇站)下车
转43路(徐家汇站)上车至(东安路站)下车
-----------------------------------------------------------
线路3
从地铁一号线(中山北路站)上车至(徐家汇站)下车
转830路(徐家汇站)上车至(宛平路站)下车
-----------------------------------------------------------
线路4
从114路(芷江西路普善路站)上车至(上海火车站)下车
转927路(汉中路站)上车至(吴兴路站)下车

linux的静态链接和动态链接程序有什么区别

恰好之前我写过一篇文章讨论这个问题,下面摘录一部分。

动态链接库和静态链接库

使用我们按照之前几节配置好的 vim 输入以下代码:

// 文件名

t.c

#include 《stdio.h》

int main()

{

printf(“hello embedTime “);

return 0;

}

这段代码包含了 stdio 头文件,调用了库函数 printf,所以编译它肯定会使用链接库。linux 系统有两种链接库,一种常常被称为“静态链接库(static library)”,还有一种常被称作“动态链接库(shared library)”。

动态链接是应用非常广泛的方式。动态链接库的英文字面意思可以翻译为“共享的库”,的确如此,使用动态链接库的程序在加载时,linux 内核会检查程序用到的库是否已经在内存中,如果在,则 linux 内核不再重新加载库,直接就执行程序了。所以,多个程序可以共享一个库,这实际上可以节约资源。

对于静态链接库来说,程序链接时会将其作为程序的一部分,因此最终生成的可执行程序相比于动态链接方式,会更大一点。

编译上面的程序:

# gcc t.c -o shared.out

这条编译语句使用的是动态链接方式。为 gcc 命令附加 -static 命令,可以以静态链接方式编译程序:

# gcc t.c -static -o static.out

现在我们查看一下这两种链接方式生成的可执行程序大小对比:

# ls -ahltotal 888Kdrwxr-xr-x 3 root root 4.0K Dec 17 22:40 .drwxr-xr-x 8 root root 4.0K Dec 11 10:28 ..drwxr-xr-x 2 root root 4.0K Dec 17 22:39 his-rwxr-xr-x 1 root root 8.4K Dec 17 22:40 shared.out-rwxr-xr-x 1 root root 857K Dec 17 22:40 static.out-rw-r--r-- 1 root root 76 Dec 17 21:37 t.c

很容易看出,使用静态链接方式生成的可执行程序,要比使用动态链接方式生成的可执行程序大 100 多倍。虽然几百 KB 对于大多数 linux 主机来说不算什么,但是嵌入式系统资源一般都非常紧缺,这时再轻易使用静态链接就非常奢侈了。

使用静态链接也是有好处的,生成的可执行程序能够脱离库独立运行,而使用动态链接的可执行程序则不能脱离库独立运行。

静态链接和动态链接的可执行程序,执行过程有哪些不同

上面讨论了 linux 中程序链接的两种方式,既然可执行程序体积相差这么多,那它们的执行过程也应该有所差异了?的确如此,现在我们一起来分析下。在linux中分析程序的执行过程,可以使用 strace 命令。

先分析 shared.out,我们输入 strace ./shared.out,会发现有一大堆输出信息:

# strace ./shared.outexecve(“./shared.out“, ) = 0brk(0) = 0x1a66000access(“/etc/ld.so.nohwcap“, F_OK) = -1 ENOENT (No such file or directory)access(“/etc/ld.so.preload“, R_OK) = -1 ENOENT (No such file or directory)open(“/etc/ld.so.cache“, O_RDONLY|O_CLOEXEC) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=33518, ...}) = 0mmap(NULL, 33518, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe241ff2000close(3) = 0access(“/etc/ld.so.nohwcap“, F_OK) = -1 ENOENT (No such file or directory)open(“/lib/x86_64-linux-gnu/libc.so.6“, O_RDONLY|O_CLOEXEC) = 3read(3, “ELF》P “..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=1857312, ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe241ff1000mmap(NULL, 3965632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe241a10000mprotect(0x7fe241bce000, 2097152, PROT_NONE) = 0mmap(0x7fe241dce000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1be000) = 0x7fe241dce000mmap(0x7fe241dd4000, 17088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe241dd4000close(3) = 0mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe241fef000arch_prctl(ARCH_SET_FS, 0x7fe241fef740) = 0mprotect(0x7fe241dce000, 16384, PROT_READ) = 0mprotect(0x600000, 4096, PROT_READ) = 0mprotect(0x7fe241ffb000, 4096, PROT_READ) = 0munmap(0x7fe241ff2000, 33518) = 0fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 2), ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe241ffa000write(1, “hello embedTime “, 16hello embedTime) = 16exit_group(0) = ?+++ exited with 0 +++

这些输出信息即为 linux 执行程序的过程。每一个函数,都可以通过 man 命令查询其手册。几个主要的过程如下:

就是加载库到内存,再执行程序,最后调用系统调用 exit 结束程序。

现在再来看看静态链接的程序 static.out,同样使用 strace 命令查看:

# strace static.out

可以看出,因为链接时,编译器直接把静态库作为程序的一部分了,所以这里相比于动态链接的程序,少了很多将库映射到内存的操作:

到这里,动态链接和静态链接程序执行时的不同点,就清楚了。

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。