计算线上距离线起点一定距离的点

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from shapely.geometry import asShape
import json
import os
from pyproj import Proj, transform

# define the pyproj CRS
# our output CRS
wgs84 = Proj("+init=EPSG:4326")
# output CRS
pseudo_mercator = Proj("+init=EPSG:3857")

def transform_point(in_point, in_crs, out_crs):
    """
    export a Shapely geom to GeoJSON Feature and
    transform to a new coordinate system with pyproj
    :param in_point: shapely geometry as point
    :param in_crs: pyproj crs definition
    :param out_crs:  pyproj output crs definition
    :return: GeoJSON transformed to out_crs
    """
    geojs_geom = in_point.__geo_interface__

    x1 = geojs_geom[‘coordinates‘][0]
    y1 = geojs_geom[‘coordinates‘][1]

    # transform the coordinate
    x, y = transform(in_crs, out_crs, x1, y1)

    # creat output new point
    new_point = dict(type=‘Feature‘, properties=dict(id=1))
    new_point[‘geometry‘] = geojs_geom
    new_coord = (x, y)
    # add newly transformed coordinate
    new_point[‘geometry‘][‘coordinates‘] = new_coord

    return new_point

def transform_linestring(orig_geojs, in_crs, out_crs):
    """
    transform a GeoJSON linestring to
      a new coordinate system
    :param orig_geojs: input GeoJSON
    :param in_crs: original input crs
    :param out_crs: destination crs
    :return: a new GeoJSON
    """
    line_wgs84 = orig_geojs
    wgs84_coords = []
    # transfrom each coordinate
    for x, y in orig_geojs[‘geometry‘][‘coordinates‘]:
        x1, y1 = transform(in_crs, out_crs, x, y)
        line_wgs84[‘geometry‘][‘coordinates‘] = x1, y1
        wgs84_coords.append([x1, y1])

    # create new GeoJSON
    new_wgs_geojs = dict(type=‘Feature‘, properties={})
    new_wgs_geojs[‘geometry‘] = dict(type=‘LineString‘)
    new_wgs_geojs[‘geometry‘][‘coordinates‘] = wgs84_coords

    return new_wgs_geojs

# define output GeoJSON file
output_result = os.path.realpath("../geodata/ch05-03-geojson.js")

line_geojs = {"type": "Feature", "properties": {}, "geometry": {"type": "LineString", "coordinates": [[-13643703.800790818,5694252.85913249],[-13717083.34794459,6325316.964654908]]}}

# create shapely geometry from FeatureCollection
shply_line = asShape(line_geojs[‘geometry‘])

# get the coordinates of each vertex in our line
line_original = list(shply_line.coords)
print(line_original)

# showing how to reverse a linestring
line_reversed = list(shply_line.coords)[::-1]
print(line_reversed)

# example of the same reversing function on a string for example
hello = ‘hello world‘
reverse_hello = hello[::-1]
print(reverse_hello)

# locating the point on a line based on distance from line start
# input in meters = to 360 Km from line start
point_on_line = shply_line.interpolate(360000)

print(point_on_line)
# transform input linestring and new point
# to wgs84 for visualization on web map
wgs_line = transform_linestring(line_geojs, pseudo_mercator, wgs84)
wgs_point = transform_point(point_on_line, pseudo_mercator, wgs84)

# write to disk the results
with open(output_result, ‘w‘) as js_file:
    js_file.write(‘var point_on_line = {0}‘.format(json.dumps(wgs_point)))
    js_file.write(‘\n‘)
    js_file.write(‘var in_linestring = {0}‘.format(json.dumps(wgs_line)))
时间: 2024-11-05 15:50:56

计算线上距离线起点一定距离的点的相关文章

技术培训----线上 PK 线下?

最近在学习数据可视化,突然有了以上关于线上教育培训的思考.本来已经定好向互联网方向发展了.可以在学习的过程中,发现自己又开始了迷茫. 在大数据的学习过程中,在学校里学到的都是一些关于思想上的内容.真正落实到工作中是什么样子的.我们谁也不知道,而通过报网络上的课程,又发现课程的水份很大.不由得开始思考,真正的学习的模式,是线上,还是线下? 有人说互联网教育很火,这两年一定会让全国的教育培训行业为之一新.就从股市里"全通教育"的股价就能看出.可真当我去体验了一下网上课程(另一网站的课程,不

“互联网+”时代,线上与线下仍无法互相取代

从18世纪第一次工业革命开始,人类实现了从手工时代向工业时代的转变,它改变了人们生产和生活方式,人类文明从此开始了新的篇章:20世纪50年代,美国科学家为了实现建模,引入了计算机,直到1994年蒂姆?伯纳斯-李万维网的提出,逐步实现了多台计算机的远程连接,自此,人们才开始走进互联的时代. 人们的消费习惯正在发生着迅速的变化. 受智能手机和社交网络.以及信息技术达到了前所未有的水平的影响,人们网络进行购物的人数持续增加.他们对比商品价格.质量.服务.物流选项,并通过在线媒体分享全程网络购物的心得及

极限工坊淘小咖浅谈:实体餐饮业的变革,线上拥抱线下,小程序的新零售

随着互联网的极速发展,人们的日常生活节奏逐渐加快,实体商家的经营的商铺营业额已经到达率了瓶颈期,一些经常关注互联网的商家早已经察觉小程序这是个新的风口,而互联网的发展,也已经让实体商家不得不做起线上+线下的营业模式. 餐饮业作为实体行业的代表,即使餐品再好吃.服务再优质,也有着非常大的局限性,客户离开店面之后,就无法持续提供优质的服务.外卖和餐饮APP的出现,虽然在很大程度上处理了这个问题,但对于绝大多数中小型餐饮店主来说,他们很难像巴奴火锅.德克士这样"地主"一样的知名度,有足够的物

Openlayers3 计算地图上任意两点间的距离

主要用的接口是new ol.Sphere(6378137).haversineDistance([x1,y1],[x2,y2]): 4326坐标系中计算两点距离的方式为: var a = new ol.Sphere(6378137).haversineDistance([120.21592590991689, 30.210793016606],[120.21670777384473, 30.211168525868086]); 版权声明:本文为博主原创文章,未经博主允许不得转载.

从业务逻辑和代码实现的角度理解电子商务的线上与线下联动之抢单业务的实现流程(一)

抢单业务在我们电子商务的业务软件流程中是不可缺少的一环,同时也为线下商户提供了商品销售的渠道和扩展的路径,很好的解决了用户订单量大的并发问题和物流司机等接单的公平性问题,帮助用户在最短的时间内推送消息. 类似于出行领域滴滴打车,以及最近刚刚阿里巴巴已经上线的"菜鸟裹裹”app,这类出行领域以及快递物流领域,基本上延续了抢单模式. 拿我最近所在的公司来说,属于快消品电子商务公司,自己做了多款软件,搭建起了B2B 电子商务平台和自己的专有物流平台以及线下仓库.公司自己作为一个平台在运营,而线下的商家

搭建一个类似线上的线下测试环境

所有环境搭建全部基于64位CentOS6.5,并且是基本安装. 2台WEB         172.16.30.10 172.16.30.11 2台MQ          172.16.30.12 172.16.30.13 2台Mysql       172.16.30.14 172.16.30.15 1台LVS         172.16.30.16  VIP:172.16.30.30 LVS采用ipvsadm来实现管理 WEB采用NGINX+TOMCAT动静分离 MQ采用集群共享方式 MY

微信调试模式,线上转为线下调试模式

微信消息调试:include_once 'Base/jssdk.php';$jssdk = new \JSSDK(C('Wechat')['AppID'], C('Wechat')['AppSecret']);$url = 'http://192.168.71.24/demo/wechat/listener'; //DM个人信息url$header[] = "Content-type: text/xml";//定义content-type为xml$header[] = "HT

使用Charles请求跳转可作为线上和线下环境的跳转

举个例子: 1.后端拿测试环境的客户端调试本地的代码 2.连接后端本地服务测试客户端和后端的交互 这样就可以改变客户端请求的测试环境换成其他的环境 一.配置 tools--Map remot... 这样重新请求接口,就会访问到指定的机器了 原文地址:https://www.cnblogs.com/Jack-cx/p/10041749.html

IT线下教育培训之殇,IT线上教育培训曙光

年关已近,大事减小,终于有空腾出精力学一些新的技能了,目前一直选择在线的几家It教育网站学习.在学习之余,也无慨叹如今的It教学通过网络已经飞入了寻常百姓家.我们学习技能的成本变得很低,学习It技能定位更准确了.于是联想到了关于自己的It学习技能之路. 在我大学即将毕业那年,本指望着大学学习的知识可以找到一份工作,但是确事与愿违.因为求职的四处碰壁,又看到周遭的同学有些参加了一些培训班,出来后找的工作还算说的过去.我也毫不犹豫的选择了一家北京的IT培训机构学习Net技术.在那个高强度的4个月培训

第二届“强网杯”全国网络安全挑战赛来袭——线上赛

为全面贯彻习主席关于网络安全和信息化工作的一系列重要指示精神,延揽储备锻炼网信领域优秀人才,提升国家网络空间安全能力水平,举办第二届"强网杯"全国网络安全挑战赛.该比赛是面向高等院校和国内信息安全企业的一次国家级网络安全赛事,旨在通过激烈的网络竞赛对抗,培养和提高国家网络安全保障能力和水平,发现网络安全领域优秀人才,提升全民网络空间的安全意识和能力水平. 比赛链接 官方比赛链接地址:https://www.ichunqiu.com/2018qwb?from=bkyl 比赛时间 线上赛报