Determining if a point lies on the interior of a polygon

link: http://paulbourke.net/geometry/insidepoly/

 

here is the python code snippet:

 

def point_inside_polygon(cls, lon,lat, coors):
        n = len(coors)
        inside = False
        p1x,p1y = coors[0]
        for i in xrange(n+1):
            p2x,p2y = coors[i % n]
            if lat > min(p1y,p2y):
                if lat <= max(p1y,p2y):
                    if lon <= max(p1x,p2x):
                        if p1y != p2y:
                            xinters = (lat-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
                        if p1x == p2x or lon <= xinters:
                            inside = not inside
            p1x,p1y = p2x,p2y
        return inside

 

the following is a cython version:

 

cpdef point_inside_polygon(double x,double y,list poly):
    cdef int n = len(poly)
    inside = False
    cdef int i
    cdef double p1x,p1y,p2x,p2y,xinters
    p1x,p1y = poly[0]
    for i in xrange(n+1):
        p2x,p2y = poly[i % n]
        if y > min(p1y,p2y):
            if y <= max(p1y,p2y):
                if x <= max(p1x,p2x):
                    if p1y != p2y:
                        xinters = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
                    if p1x == p2x or x <= xinters:
                        inside = not inside
        p1x,p1y = p2x,p2y
    return inside

 

the cython version is 10x faster that the first.

Autosar入门_OS_5 os hook函数说明 阅读详情

相关推荐

SpringBoot3 + OAuth2.1实战:5分钟搞定授权码模式(含完整代码)

本文详细介绍了如何在SpringBoot3环境中快速实现OAuth2.1的授权码模式,包括环境配置、核心安全实现及完整代码示例。通过Spring Security集成,开发者可以高效构建企业级安全认证系统,解决版本兼容性问题,提升开发效率。

weixin_29216353的博客 138

判断点在凹凸多边形内部

原文:http://paulbourke.net/geometry/insidepoly/ Determining if a point lies on the interior of a polygon Written by Paul Bourke November 1987 Solution 1 (2D) The following

蓝色污点的专栏 1738

如何用 Python 实现自动化测试?详细步骤和代码示例

Python自动化测试实战指南 本文系统介绍了使用Python构建自动化测试体系的完整方案。主要内容包括: 环境搭建:Python 3.8+虚拟环境配置,安装pytest、Selenium等核心测试库 分层测试实现: 单元测试:通过计算器示例演示pytest断言和异常测试 API测试:使用requests库进行RESTful接口验证 UI测试:Selenium WebDriver实现网页交互测试 高级特性: 使用fixture管理测试依赖 参数化实现数据驱动测试 生成HTML和Allure测试报告 GitH

m0_64424835的博客 448

点在多边形内_如何判定点是否在给定的多边形中

朋友昨天问我一问题:“如何判定某点是否在多个点组成的多边形之内“。我想了一晚上也没想出怎么解决这个问题,甚至做梦都迷迷糊糊的梦到了这个问题,但是没找到怎么解决。今早起来后,被这个有趣的问题继续困扰着。想解决问题的冲动,却苦于没有足够能力解决,驱使我到网上查找解决途径。方法1:R没有什么问题是R解决不了的;如果有,大概率是搜索的关键词用的不对。R中有个sp package,其中有个point.in....

weixin_39933026的博客 523

基于Open Cluster Management构建企业级多Kubernetes集群管理平台OpenClaw

在云原生架构中,Kubernetes已成为容器编排的事实标准。随着业务规模扩大,企业往往需要管理分布在多个云环境或数据中心的Kubernetes集群,这带来了集群管理、应用分发、策略统一和监控运维等复杂挑战。多集群管理技术通过提供统一控制平面,实现了对分布式资源的集中管控,其核心价值在于提升运维效率、保障安全合规并降低管理成本。Open Cluster Management(OCM)作为CNCF沙箱项目,采用Kubernetes原生架构,通过自定义资源定义(CRD)和控制器模式,为构建多集群管理平台提供了标

weixin_33747129的博客 367

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

python的third party llibs

最近应用py构建后端的整个应用层。用到不少第三方的lib。有些不怎么符合要求,于是动手改改。现在慢慢发现   改py的东西还是挺好玩的,代码大部分易读易懂,dependency也少,不用搞一大堆的包。     工作需要 以前改别人的lib很少,只有早些年改过一个 wx widgets 连接 mysql的一个macro。   之后改过 java tokyo cabinet的client...

mathgl 740

一个代码循环计算水在石墨烯表面的接触角

石墨烯接触角

Rockyoung 2573

我与python的故事

Python的历史大概从90年代初开始, 不过当时在中国知道这个名字的人我猜测可能很少。 而我知道这个名字的时候已经是2004年初了。当时我回国过年,年后去广州办事,偶一日因为等人无聊于是跑到天河的一间书店看书。我翻过的其中一本书是蔡学镛的&lt;&lt;java夜未眠&gt;&gt;,在比较靠后的某一章提到Python. 他的comment: 易学易用,功能强大,国外很多人使用. 当时我不免觉...

mathgl 491

Nerf 训练自有数据

colmap相机位姿转为LLFF格式数据

zfjBIT的专栏 2309

uniapp+renderJS+google map开发安卓版APP非小程序

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 667

cython的另类用途

都知道py虽然方便但是却有个不是问题的问题:就是发布时的二进制格式的限制。   常用的打包有cx_freeze, py2exe等。此类工具大多将py变为pyc然后放置在.zip文档中。对于某些加密的需求可能不大合适..   于是这时候cy就可以派上用场了。   cy的其中一个功能就是把寻常的py代码变为c wrapper py c api的形式的调用。最后变为.pyd (一个标准的.d...

mathgl 299

干货|C#上位机与西门子PLC的Profinet协议通信开发(工控机版)

文章摘要: Profinet是西门子主导的工业以太网协议,支持实时通信(RT/IRT),广泛应用于PLC与工控机通信。本文聚焦C#上位机通过S7协议(集成于Profinet接口)高效访问西门子PLC(S7-1200/1500等),提供完整开发方案: 协议基础:解析Profinet三层架构(TCP/IP层、实时层、应用层),对比S7协议优势(开发便捷、跨平台); 开发实践:基于S7NetPlus/Snap7库实现数据读写,涵盖DB块、I/O点等地址规则; 环境配置:工控机(Windows/Linux/统信UO

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1212

swig, python, g++

最近在搞GIS的东西,有些底层的库需要封装为python的extension.   swig虽然古老,但是是个不错的东西, 对于c-style的library来说 很适合。   在编译为动态库前记得将后缀名改为 .pyd 按照swig的文档 .so 和 .dll 均不起作用。很奇怪   使用环境: python 2.5 mingw g++ ver: 3.4.5 swing 1....

mathgl 249

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

build pyrun/python from source

quite easy on ubuntu.   1: build sqlite first.. use the latest autoconf version 2: apt-get install libbz2-dev 3: apt-get install zlib1g-dev 4: apt-get install libssl-dev 5: apt-get install lib...

mathgl 240

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

speeding up python

python确实是十分慢的语言,有多慢?不好说,我测试过一些非io相关的程序,比java慢大约50倍是有的,比c++只会更慢(除了string操作外)   幸好python从来不缺各种工具,对于加快速度的工具选择更是丰富。数了一下有: pypy, psyco, cython,swig,pyrex等等。   这些工具的一个核心抽象说来只有一点:找出慢的部分然后把它变快。 直观的做法是把慢的部...

mathgl 228

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

static building lxml

well  it is not really straightforward..   when building with static deps like python setup.py build --static_deps   you may see two possible errors   1: when you saw crc iconv.xx error, you c...

mathgl 227

change buffer size in order to send chunks data in ampoule

ampoule use name pipe to communicate among processes. There is a limit about 4096 bytes   on windows. We can't send any data which has a length over 4000. hacking the twisted codes can solve this pr...

mathgl 208

numpy 1.7.0 fails with cx_freeze 4.3.1

It is a work around:   find /numpy/core/__init__.py, and omit 'del sys' which locates at the bottom of this file.   numpy 1.6.2 doesn't need 'del sys'.   update: use cx_freeze 4.3.2. this prob...

mathgl 197

twisted iocp reactor is still buggy---it was fixed on 23/10/2012

   I reported a bug on last weekend...This bug can be easily reproduced by sending continuous small chunks data. If we use pb or amp and send any data whose size can't fit the buffer (128K),   iocp...

mathgl 183

which one is thread safe?

quote:   It's not so much that they're not performed, it's that because you called a reactor API from a thread, which you are never ever ever allowed to do , you have put your program into a state ...

mathgl 176

cython的效果

我有个用py写的 crc-ccitt的验证程序(实现效率并不高)   这么个程序用cython简单转换一下。速度提高了70x ...   出于无聊,我把这段代码变为c++,用swig生成一个接口调用。   结果是:.... 这两者速度相差无几,可以忽略。。。。   再测试。。。直接拿boost的crc来用。用cython调用。   速度比py提高 大约 200x。是我自己写的校...

mathgl 172

build apsw manually

download sqlite sources and copy all files to apsw/src   open setup.py   find in finalize_options of apsw_build_ext class   comment ext.libraries.append('sqlite3')   find ext_modules=[Extensi...

mathgl 168

python的一些推荐

看到未名的几篇帖子 使我想起了和python的一些经历,于是写了一篇咚咚。   1 书籍: python的syntax足够简单,semantics也不复杂,不怎么会使人混乱,一般来说看自带的文档足够可以学习了,看完两章便可以写出一些non-trivial的程序了。 硬要说入门书籍。 learning in python可以一看。目前的版本似乎是based on python2.3的,有些...

mathgl 165

再谈twisted

现在我手头用的是11.0。 很好。没什么很大的问题,原来的版本对于iocp有个很奇怪的问题,现在被修复了。   今天在中文列表看了一下一堆人推荐gevent。许多人认为twisted是很twisted。文档不易懂,而且并不算太好用。   老实说twisted 的 core doc还是不错的,起码比那本 twisted programming要好。后者的例子大多都不知所云,看了更加令人崩溃。...

mathgl 161

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 363
上一篇: pypy的一个测试
下一篇: cross compile mono for windows.
mathgl
博客等级 码龄19年 1粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值