我一直在尝试设置我的Windows计算机,以便我可以使用PostGIS扩展的本地postgreSQL.有了这个安装,我希望能够在将它放入云之前在本地创建一个geodjango项目.我一直在使用SQLite DB在我的本地机器上使用Django一段时间,但由于下一个项目将部分基于基于坐标的数据,我想设置正确的环境.
导入说明:我已经安装了mini-conda以在单独的环境中运行.我工作的时候会激活这个环境"开发"
我试图在线跟踪大多数geodjango信息/教程,但无法使其工作.我做了什么(主要是遵循这个:https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows):
毕竟我创建了一个新的django项目,在settings.py中我添加了一些部分:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
'nameOfMyApp',
]
Run Code Online (Sandbox Code Playgroud)
我在settings.py中也有这个:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': '****',
'PASSWORD': '****',
'HOST': 'localhost',
}
}
# FOR GEODJANGO
POSTGIS_VERSION = (2, 4, 3)
Run Code Online (Sandbox Code Playgroud)
当我尝试在django中设置数据库时,我运行(在右侧文件夹中):
python manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal202", "gdal201", "gdal20", "gdal111", "gdal110", …Run Code Online (Sandbox Code Playgroud) 我在现场有很多传感器可以测量水压。过去,这些传感器的高度已经改变了很多次,导致时间序列发生跳跃。由于这些时间序列是连续的,并且我有一个手动测量,所以从技术上来说,我应该能够消除跳跃(手动这很容易,但是测量太多,所以我需要在 python 中完成)。
我尝试过使用中值滤波器消除跳跃,但这并没有真正起作用。
我的代码:
# filter out noise in signal (peaks)
minimumPeak = 0.03 # filter peaks larger than 0.03m
filtered_value = np.array(im.median_filter(data['value'], 5))
noise = np.array((filtered_value-data['value']).abs() > minimumPeak)
data.loc[noise, 'value'] = filtered_value[noise]
Run Code Online (Sandbox Code Playgroud)
数据是包含两列的 pandas 数据框:“日期时间”和“值”。
我也尝试过手动执行此操作,并使其在简单的情况下工作,但在其他情况下效果不佳。知道如何过滤掉跳跃吗?
下图显示了一个示例(黄色表示跳跃,红色表示手动测量(很可能该测量不是像本示例中那样在开始时进行))
我正在尝试创建一个 docker 设置,以便我可以轻松构建和部署 geodjango 应用程序(带有 postgis 后端)。我有以下文件夹结构:
|-- Dockerfile
|-- Pipfile
|-- Pipfile.lock
|-- README.md
|-- app
| |-- manage.py
| |-- app
| `-- app_web
Run Code Online (Sandbox Code Playgroud)
在我设置 Django 的 Dockerfile 中,我有以下内容:
# Pull base image
FROM python:3.7
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install dependencies
RUN pip install pipenv
COPY . /code
WORKDIR /code/
RUN pipenv install --system
# Setup GDAL
RUN apt-get update &&\
apt-get install -y binutils libproj-dev gdal-bin python-gdal python3-gdal
# set …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个显示交互式地图的网页(占据页面的100%),其中我提供了包含信息的点或线.Plotly似乎是完美的,我真的很喜欢它的可视化,但它不支持内置的Open Street Map等地图,它使用Mapbox.我没有任何反对Mapbox的东西,但从我发现它可以免费获得一定数量的视图(当它使用OSM时).
简单地说:有一个简单的(作为开源和免费使用)方式使用python构建这样一个网页,显示信息的地图?
在过去的几周里,我尝试学习纠正图像,并在这里的人们的帮助下,我已经设法更好地理解它.大约一个星期前,我设置了一个我想要纠正的测试示例(从上面查看图像).这个工作得很好(原:http://sitedezign.net/original.jpg和修正:http://sitedezign.net/rectified.jpg)与函数T = cv2.getPerspectiveTransform(UV_cp,XYZ_gcp)其中,T变为单应.
当我尝试使用真实世界的照片时,它失败了,因为真实世界的坐标在一个平面上并不完美(但是在空间的X,Y和Z坐标中测量的大约10个控制点).因此我决定使用solvePnP,并希望能够创建一个我可以使用的Homography.
我在测试示例中尝试了这个但没有得到我预期的结果:图像没有被纠正,我使用solvePnP计算的Homography不等于用getPerspectiveTransform计算的Homography.
我的代码:
# Set UV (image) and XYZ (real life)
UV_cp = np.array([[1300.0, 2544.0], # left down
[1607.0, 1000.0], # left up
[3681.0, 2516.0], # right down
[3320.0, 983.0]], np.float32) # right up
# Z is on 0 plane, so Z=0.0
XYZ_gcp = np.array([[0.0, 400.0, 0.0],
[0.0, 0.0, 0.0],
[300.0, 400.0, 0.0],
[300.0, 0.0, 0.0]], np.float32)
rvec, tvec = cv2.solvePnP(XYZ_gcp, UV_cp, K, D)
rotM_cam = cv2.Rodrigues(rvec)[0]
# calculate camera position …Run Code Online (Sandbox Code Playgroud) 我正在绘制一张地图,上面有箭头。这些箭头代表风向、平均风速(每个方向)和发生情况(每个方向)。
方向由箭头的方向指示。箭头的长度表示该方向的平均风速。箭头的颜色表示该方向有风。
这一切都可以与下面的脚本配合使用:
windData = pd.read_csv(src+'.txt'), sep='\t', names=['lat', 'lon', 'wind_dir_start', 'wind_dir_end', 'total_num_data_points','num_data_points', 'avg_windspeed']).dropna()
# plot map
m = Basemap(llcrnrlon=minLon, llcrnrlat=minLat, urcrnrlon=maxLon, urcrnrlat=maxLat, resolution='i')
Left, Bottom = m(minLon, minLat)
Right, Top = m(maxLon, maxLat)
# get x y
x, y = m(windData['lon'], windData['lat'])
# angles
angleStart = -windData['wind_start']+90
angleStart[angleStart<0] = np.radians(angleStart[angleStart<0]+360.)
angleEnd = -windData['wind_end']+90
angleEnd[angleEnd<0] = np.radians(angleEnd[angleEnd<0]+360.)
angle = angleStart + math.radians(binSize/2.)
xux = np.cos(angle) * windData['avg_windspeed']
yuy = np.sin(angle) * windData['avg_windspeed']
# occurence
occurence = (windData['num_data_points']/windData['total_num_data_points'])
xi = np.linspace(minLon, maxLon, …Run Code Online (Sandbox Code Playgroud) 从源代码我以JSON格式检索一些数据.我想将这些数据(及时测量)保存为文本文件.我反复想要使用相同的信号源并查看是否有新的测量值,如果是,我想将其添加到其他测量值.
我得到的数据如下:
{"xyz":[{"unixtime":"1458255600","time":"00:00","day":"18\/03","value":"11","paramlabel":"30-500 mHz","popupcorr":"550","iconnr":"7","paramname":"30-500 mHz"},{"unixtime":"1458256200","time":"00:10","day":"18\/03","value":"14","paramlabel":"30-500 mHz","popupcorr":"550","iconnr":"7","paramname":"30-500 mHz"},etc.]}
Run Code Online (Sandbox Code Playgroud)
我将这些数据加载到pandas DataFrame中,以便能够更轻松地使用它.但是,当我将其加载到数据框中时,所有列都被视为字符串.如何确保将unixtime列视为时间戳(以便我可以转换为日期时间)?
我有两组数据,我想找到其中的相关性。尽管数据相当分散,但存在明显的关系。我目前使用 numpy polyfit (第 8 阶),但该行有一些“摆动”(特别是在开头和结尾),这是不合适的。其次,我认为线条开始处的拟合效果不是很好(曲线应该稍微陡一些。
如何通过这些数据点获得最适合的“样条线”?
我当前的代码:
# fit regression line
regressionLineOrder = 8
regressionLine = np.polyfit(data['x'], data['y'], regressionLineOrder)
p = np.poly1d(regressionLine)
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习 Rust 编程语言(目前主要使用 python)。Rust 网站提到的任务之一是构建系统,将员工和部门添加到充当“商店”的 HashMap 中。
在代码中,我尝试将其拆分为单独的函数,该函数解析用户输入并检查它是否是列出部门或添加员工的请求。接下来,我想要特定的函数来处理这些操作。
假设输入的形式为:
Add employee to department
Run Code Online (Sandbox Code Playgroud)
然后我希望初始解析函数检测到该操作是“添加”,我想将其传递给处理添加的函数“add”。
我已将字符串按空格分割为字符串向量。是否可以将该向量的切片 (["employee", "to", "department"]) 传递给函数 add?看来我只能通过完整的参考了。
我的代码:
fn main() {
// this isnt working yet
let mut user_input = String::new();
let mut employee_db: HashMap<String,String> = HashMap::new();
get_input(&mut user_input);
delegate_input(&user_input[..], &mut employee_db);
user_input = String::new();
}
fn get_input(input: &mut String) {
println!("Which action do you want to perform?");
io::stdin().read_line(input).expect("Failed to read input");
}
fn delegate_input(input: &str, storage: &mut HashMap<String,String>) {
// Method is responsible for putting other …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习 Rust,并利用代码的出现来做到这一点。我刚刚开始并决定拥有一个包含“Elf”结构的向量,其中每个结构都包含一个向量 calory_items。
我正在尝试从文本文件创建它并具有以下代码:
use std::io::{self, BufReader};
use std::path::Path;
use std::io::prelude::*;
use std::fs::File;
struct Elf {
calory_items: Vec<i32>
}
fn parse_meal_list(source: &str) -> Vec<Elf> {
let file = File::open(source).unwrap();
let file = BufReader::new(file);
let mut elves: Vec<Elf> = Vec::new();
let mut elf = Elf {
calory_items: Vec::new()
};
for line in file.lines() {
let line = line.unwrap();
if line.is_empty() {
// create new Elf
if elf.calory_items.len() > 0 {
// in case there are two empty lines
elves.push(elf); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 python 中的异步从网站获取数据。作为示例,我使用了此代码(在“更好的协程示例”下):https ://www.blog.pythonlibrary.org/2016/07/26/python-3-an-intro-to-asyncio/
现在这工作正常,但它将二进制块写入文件,而我不希望它在文件中。我想要直接得到结果数据。但我目前有一个协程对象列表,我无法从中获取数据。
代码:
# -*- coding: utf-8 -*-
import aiohttp
import asyncio
import async_timeout
async def fetch(session, url):
with async_timeout.timeout(10):
async with session.get(url) as response:
return await response.text()
async def main(loop, urls):
async with aiohttp.ClientSession(loop=loop) as session:
tasks = [fetch(session, url) for url in urls]
await asyncio.gather(*tasks)
return tasks
# time normal way of retrieval
if __name__ == '__main__':
urls = [a list of urls..]
loop = asyncio.get_event_loop()
details_async = loop.run_until_complete(main(loop, urls))
Run Code Online (Sandbox Code Playgroud)
谢谢
我想创建一个从网站异步下载的功能。我需要将下载结果连接到输入参数,以便我可以在下载后使用结果和参数。
我目前有以下内容:
async def download(session, url, var1, var2):
with async_timeout.timeout(10):
async with session.get(url) as response:
return await (response.read(), url, var1, var2)
async def loop_download(loop, urls, var1s, var2s):
async with aiohttp.ClientSession(loop=loop) as session:
tasks = [download(session, url, var1, var2) for url, var1, var2 in zip(urls, var1s, var2s)]
results = await asyncio.gather(*tasks)
return results
loop = asyncio.get_event_loop()
results = loop.run_until_complete(loop_download(loop, urls, var1s, var2s))
Run Code Online (Sandbox Code Playgroud)
然而这会返回一个错误:
TypeError: object tuple can't be used in 'await' expression
Run Code Online (Sandbox Code Playgroud)
如何将一些输入数据(例如网址)加入到结果中,以便我可以使用它进行进一步分析?