📄 xyz2kml.m
字号:
function xyz2kml(UserPath)
%convert the xyz data to kml, in order to display it in Google Earth.
%%
DepthZero=load('高程基准面.txt','-ascii');
%打开文件
[XYZFileName,XYZFilePath]=uigetfile(strcat(UserPath,'*.xyz'),'请选择需转换的XYZ文件:');
if strcmp(XYZFilePath(length(XYZFilePath)),'\')~=1
XYZFilePath(length(XYZFilePath)+1)='\';
end
XYZFilePathName=strcat(XYZFilePath,XYZFileName); %XYZ 文件绝对路径引用
LineName=XYZFileName(1:length(XYZFileName)-4);
KmlFileName=strcat(LineName,'.kml');
KmlFilePathName=strcat(XYZFilePath,KmlFileName); %Kml 文件绝对路径引用,生成的同名Kml文件存于与XYZ文件相同目录中。
Fid_XYZ=fopen(XYZFilePathName,'r');
if Fid_XYZ==-1
error(strcat(XYZFilePathName,'无法打开!'));
end
fclose(Fid_XYZ);
%%
Fid_Kml=fopen(KmlFilePathName,'w');
if Fid_Kml==-1
error(strcat(KmlFilePathName,'无法打开!'));
end
%%
Fid_Str=fopen('kmlstr.txt','r');
if Fid_Str==-1
error('kmlstr.txt无法打开!');
end
%%
fprintf(Fid_Kml,'<?xml version="1.0" encoding="UTF-8"?>\n');
fprintf(Fid_Kml,'<kml xmlns="http://earth.google.com/kml/2.1">\n');
fprintf(Fid_Kml,'<Document>\n <name>');
bytes_LineName = unicode2native(LineName, 'UTF-8');
fwrite(Fid_Kml, bytes_LineName, 'uint8');
fprintf(Fid_Kml,'</name>\n');
%%
while feof(Fid_Str)~=1
TempStr=fgetl(Fid_Str);
fprintf(Fid_Kml,'%s\n',TempStr);
end
fclose(Fid_Str);
%%
fprintf(Fid_Kml,' <Placemark>');
fprintf(Fid_Kml,' <name>');
bytes_LineName = unicode2native(LineName, 'UTF-8');
fwrite(Fid_Kml, bytes_LineName, 'uint8');
fprintf(Fid_Kml,'</name>\n');
fprintf(Fid_Kml,' <styleUrl>#msn_ylw-pushpin</styleUrl>\n');
fprintf(Fid_Kml,' <LineString>\n');
fprintf(Fid_Kml,' <extrude>1</extrude>\n');
fprintf(Fid_Kml,' <tessellate>1</tessellate>\n');
fprintf(Fid_Kml,' <altitudeMode>absolute</altitudeMode>\n');
fprintf(Fid_Kml,' <coordinates>\n');
%%
Data=load(XYZFilePathName,'-ascii');
X=Data(:,1);
Y=Data(:,2);
Z=DepthZero+Data(:,3).*10; %水深(数值为正)扩大10倍,以DepthZero为基准面,数值越小,表明越深.
clear Data;
N=length(X);
for c1=1:N
fprintf(Fid_Kml,'%.10f,%.10f,%.0f ',X(c1),Y(c1),Z(c1));
end
%%
fprintf(Fid_Kml,'</coordinates>\n </LineString>\n');
fprintf(Fid_Kml,' </Placemark>\n');
fprintf(Fid_Kml,'</Document>\n');
fprintf(Fid_Kml,'</kml>\n');
%%
fclose(Fid_Kml);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -