判断点或者坐标是否在不规则区域内

以下有三种方法:

1、如果是经度纬度数据的话,可以根据百度API来实现,具体请看:http://blog.csdn.net/c1481118216/article/details/52661934

2、如果是点数据的话,可以根据PNPoly算法来实现,具体请看: http://www.cnblogs.com/luxiaoxun/p/3722358.html、

3、这种想法是我自己想的,有待各位验证。如果是边数比较少量并且是凸边形的话,可以求出每个边的函数,利用多个函数的不等式组进行判断

下面求x∈[-2,2],y∈[2-,2]区域中,所取的点是否落在三角形区域内,利用了四个不等式组如:x>0,y<x,y>1/2x,x<1.5,将落在三角形内的点标记为红色,其他为蓝色

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 22 09:25:34 2016

@author: Jemila

import matplotlib.pyplot as plt 
import random

n = int(raw_input("Please input your number:"))

x=[random.uniform(-2,2) for i in range(n)]
y=[random.uniform(-2,2) for i in range(n)]

x1=[]
y1=[]

for i in range(n):
    if y[i]<x[i] and x[i]>0 and 2*y[i]>x[i] and x[i]<1.5:
        x1.append(x[i])
        y1.append(y[i])

plt.plot(x,y,'bo')
plt.plot(x1,y1,'ro')
plt.show()

转载自:https://mtr-1.oss-cn-beijing.aliyuncs.com/qyblog/2019/04/53096594.jpg

You may also like...

退出移动版