CSharpGDAL跨平台程序

关于项目

  • DataProcess.FileProject 为 Smart里的拼接投影库。
  • DataProcess.ProjectTool 为 拼接投影接口工具。
  • DataProcess.Gdal 为 GDAL 使用 SWIG生成的 平台调用的源码

如果是新的跨平台项目,PIE.Meteo.Gdal项目可以直接拷贝,里面代码无需修改,也不要修改,如需封装,外加一层封装。

关于开发

关于安装

Linux以CentOS7为例

安装.NetCore环境

注册 Microsoft 密钥和源

1
2
3
4
5
6
7
8
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm


获取https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
准备中... ################################# [100%]
正在升级/安装...
1:packages-microsoft-prod-1.0-1 ################################# [100%]

安装 .NET Core 运行时

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo yum install dotnet-runtime-3.1


=======================================================================================
Package 架构 版本 源 大小
=======================================================================================
正在安装:
dotnet-runtime-3.1 x86_64 3.1.3-1 packages-microsoft-com-prod 29 M
为依赖而安装:
dotnet-host x86_64 3.1.3-1 packages-microsoft-com-prod 39 k
dotnet-hostfxr-3.1 x86_64 3.1.3-1 packages-microsoft-com-prod 148 k
dotnet-runtime-deps-3.1 x86_64 3.1.3-1 packages-microsoft-com-prod 2.8 k

事务概要
=======================================================================================
安装 1 软件包 (+3 依赖软件包)

Linux上安装GDAL2.4.0

前期准备,将GDAL安装源码传送并解压到Linux环境中,并安装依赖项

1
sudo yum install gcc gcc-c++ gcc-gfortran.x86_64 byacc.x86_64 flex.x86_64 libjpeg-turbo-devel.x86_64 zlib-devel.x86_64

编译安装 proj-4.9.3

1
2
3
4
5
cd proj-4.9.3
./configure --prefix=/usr/local
make -j4
make install
cd ..

编译安装 geos-3.7.1

1
2
3
4
5
cd proj-4.9.3
./configure --prefix=/usr/local
make -j4
make install
cd ..

编译安装 hdf-4.2.14

1
2
3
4
5
cd hdf-4.2.14
./configure --prefix=/usr/local --enable-shared --disable-fortran
make -j4
make install
cd ..

编译安装 hdf5-1.8.11

1
2
3
4
5
cd hdf5-1.8.11
./configure --prefix=/usr/local
make -j4
make install
cd ..

编译安装 gdal-2.4.0

1
2
3
4
5
cd gdal-2.4.0
./configure --prefix=/usr/local
make -j4
make install
cd ..

配置linux系统的动态库查找目录

1
2
echo '/usr/local/lib' >> /etc/ld.so.conf
ldconfig

Windows上安装GDAL2.4.0

将已经编译好的GDAL解压到Windows64位的电脑上

Path加入以下变量
./gdal/bin
./geos/bin
./hdf4/bin
./hdf5/bin
./jpeg/bin
./proj/bin
./proj/share
./szip/bin
./zlib/bin

加入环境变量GDAL_DATA
./gdal/data

安装处理程序

将生成的程序传送到Linux环境下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ls

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Config Data Debug64 DebugWin64 Release64 ReleaseWin64
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

cd Debug64/netcoreapp3.1
ls

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Config PIE.Meteo.HsdReader.dll
en-US PIE.Meteo.ProjectTool.deps.json
HDF.PInvoke.dll PIE.Meteo.ProjectTool.dll
libgdalconst_warp.so PIE.Meteo.ProjectTool.dll.config
libgdal_warp.so PIE.Meteo.ProjectTool.exe
libogr_warp.so PIE.Meteo.ProjectTool.pdb
libosr_warp.so PIE.Meteo.ProjectTool.runtimeconfig.dev.json
PIE.Meteo.FileProject.dll PIE.Meteo.ProjectTool.runtimeconfig.json
PIE.Meteo.FileProject.dll.config prjChche
PIE.Meteo.FileProject.pdb ProjectionSetting.xml
PIE.Meteo.Gdal.dll Temp
PIE.Meteo.Gdal.pdb zh-Hans
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

运行测试程序

1
dotnet PIE.Meteo.ProjectTool.dll FY3D_Project_test.xml

关于调试

通过Visual Studio 使用 SSH 附加到进程 的 方式进行远程调试。

  1. 通过宏开关在Debug版本的Program开头加入以下代码
1
2
3
4
5
#if DEBUG   
//Linux版远程调试附加到进程时使用等待.....
Console.WriteLine("Please press any Key to continue........");
Console.ReadKey();
#endif
  1. 将Debug版本的输出目录全部复制到Linux远程机器上。
  2. 在Linux机器上运行Debug下的主文件,会自动进入等待输入。
  3. 打开Windows上的VS,依次展开[调试]->[附加到进程]。
  4. 连接类型选择SSH,并加入目标机器。
  5. 下侧会出现可用的进程,选择dotnet进程并确定,此时已附加进程成功。
  6. 转回到Linux按下任意键,VS将会自动进入断点。

---------------------------------待补充--------------------------------------