没有合适的资源?快使用搜索试试~ 我知道了~
首页地理信息系统算法基础上机题目(java实现).
地理信息系统算法基础上机题目(java实现).
4星 · 超过85%的资源 需积分: 18 19 下载量 164 浏览量
更新于2023-03-16
评论 3
收藏 488KB PDF 举报
地理信息系统算法基础上机题目(java实现). 一、已知一线段AB,在某个方向选择一点P,输入距离d,求线段AB延长距离d后的点坐标; 2 二、判断两线段是否相交; 4 三、多边形重心计算; 7 四、编程实现八方向矢量线栅格化; 9 五、编程实现全路径矢量线栅格化; 11 六、编程实现间隔取点法达到矢量数据的压缩; 13 七、求点P(x,y)到线段l的最短距离; 15 八、编写链式编码程序实现栅格数据的压缩; 17 九、编程:用垂距法实现矢量数据的压缩。 20
资源详情
资源评论
资源推荐
GIS 基础算法
仅供参考---gis_lyh
地理信息系统算法基础上机题目(java 实现)
gis_lyh by 2013.4
目录
一、已知一线段 AB,在某个方向选择一点 P,输入距离 d,求线段 AB 延长距离 d 后的
点坐标; ................................................................................................................................... 2
二、判断两线段是否相交; ................................................................................................... 4
三、多边形重心计算; ........................................................................................................... 7
四、编程实现八方向矢量线栅格化; ................................................................................... 9
五、编程实现全路径矢量线栅格化; ................................................................................. 11
六、编程实现间隔取点法达到矢量数据的压缩; ............................................................. 13
七、求点 P(x,y)到线段 l 的最短距离; ................................................................................ 15
八、编写链式编码程序实现栅格数据的压缩; ................................................................. 17
九、编程:用垂距法实现矢量数据的压缩。 ..................................................................... 20
GIS 基础算法
仅供参考---gis_lyh
一、已知一线段 AB,在某个方向选择一点 P,输入距离 d,
求线段 AB 延长距离 d 后的点坐标;
1、 package gis.lyh.algorithm;
2、 import com.vividsolutions.jts.geom.*;
3、
4、 /**
5、 * 点到线段的距离
6、 * @author gis_lyh
7、 *
8、 */
9、 public class PointDistSegment {
10、
11、 /**
12、 * @param args
13、 */
14、 public static void main(String[] args) {
15、 // TODO Auto-generated method stub
16、 Coordinate polyLine[]=new Coordinate[]{new
Coordinate(0,0),new Coordinate(1,1)};
17、 Coordinate point=new Coordinate(2,3);
18、
19、 double dist=PointToSegment(polyLine,point);
20、 System.out.print(dist);
21、 }
22、
23、 /**
24、 * 点到线段的距离
25、 * @param polyLine
26、 * @param point
27、 * @return
28、 */
29、 private static double PointToSegment(Coordinate[] polyLine,
Coordinate point)
30、 {
31、 double dist=0, a,b,c;
32、 a=Distance(polyLine[0],polyLine[1]);
33、 b=Distance(polyLine[0],point);
34、 c=Distance(polyLine[1],point);
35、
36、 if(c<=0.000001||b<=0.000001)
37、 dist=0;
38、 if(a<=0.00001)
GIS 基础算法
仅供参考---gis_lyh
39、 dist=b;
40、 if(c*c>=a*a+b*b)
41、 dist=b;
42、 if(b*b>=c*c+a*a)
43、 dist= c;
44、
45、 double p=(a+b+c)/2;
46、 dist=2*Math.sqrt(p*(p-a)*(p-c)*(p-c))/a;
47、 return dist;
48、 }
49、
50、 /**
51、 * 两断点的距离
52、 * @param coordinate
53、 * @param coordinate2
54、 * @return
55、 */
56、 private static double Distance(Coordinate p1, Coordinate p2)
57、 {
58、 return
Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
59、 }
60、 }
GIS 基础算法
仅供参考---gis_lyh
二、判断两线段是否相交;
package gis.lyh.algorithm;
import com.vividsolutions.jts.geom.*;
import com.vividsolutions.jts.io.WKTReader;
/**
* 使用叉积判断线段是否相交
* @author gis_lyh
*
*/
public class LineIntersectLine {
/**
* @param args
*/
public static void main(String[] args) throws Exception
{
// 使用WKT读取文本创建几何体
WKTReader read=new WKTReader();
LineString polyLine1=(LineString)read.read("LINESTRING(0 0,5
5)");
LineString polyLine2=(LineString)read.read("LINESTRING(0 6,11
6)");
//分别获取线段两端点的值
Coordinate []coordinates=polyLine1.getCoordinates();
Coordinate p1=coordinates[0];
Coordinate p2= coordinates[1];
coordinates=polyLine2.getCoordinates();
Coordinate q1=coordinates[0];
Coordinate q2=coordinates[1];
//是否相互跨立
Boolean b=CrossMethod(p1,p2,q1,q2);
if(b)
System.out.println("线段相交。");
else
System.out.println("线段不相交。");
}
/**
*
GIS 基础算法
仅供参考---gis_lyh
* @param p1
* @param p2
* @param q1
* @param q2
* @return 返回两个叉积
*/
public static Boolean CrossMethod(Coordinate p1, Coordinate
p2,Coordinate q1, Coordinate q2)
{
//判断两直线的最小外包矩阵是否相交
if(Envelope.intersects(p1, p2, q1, q2))
{
double
result1=ResultMethod(CutMethod(p1,q1),CutMethod(q2,q1),CutMethod(p2,q
1));
//System.out.println("result1:"+result1);
double
result2=ResultMethod(CutMethod(q1,p1),CutMethod(p2,p1),CutMethod(q2,p
1));
//System.out.println("result2:"+result2);
if(result1<=0&&result2<=0)
return true;
else
return false;
}
else
return false;
}
/**
* 计算叉积
* @param pCq1
* @param qCq
* @param pCq2
* @return
*/
private static double ResultMethod(Coordinate pCq1, Coordinate
qCq,Coordinate pCq2)
{
double
result=(pCq1.x*qCq.y-qCq.x*pCq1.y)*(pCq2.x*qCq.y-qCq.x*pCq2.y);
return result;
}
剩余20页未读,继续阅读
大龄Giser~
- 粉丝: 15
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3