我需要用户能够在地图上绘制复杂的多边形,然后让应用程序检查给定的经度/纬度是否位于该多边形内.
我只能找到使用简单的x/y笛卡尔坐标系的算法,该坐标系不能补偿地球的曲率.
用户在PC上绘制多边形,其中点通过无线电传输到嵌入式设备,然后需要检查给定多边形是否位于其当前位置(取自GPS).
由于这是针对嵌入式设备,我无法使用大型库,而是我需要算法来自行执行检查或者是非常小的库.但我似乎无法找到任何这样的算法.
有没有办法重载<<运算符,作为类成员,将值作为文本流打印.如:
class TestClass {
public:
ostream& operator<<(ostream& os) {
return os << "I'm in the class, msg=" << msg << endl;
}
private:
string msg;
};
int main(int argc, char** argv) {
TestClass obj = TestClass();
cout << obj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法是在类之外重载操作符:
ostream& operator<<(ostream& os, TestClass& obj) {
return os << "I'm outside of the class and can't access msg" << endl;
}
Run Code Online (Sandbox Code Playgroud)
但是,访问对象的私有部分的唯一方法是与操作员函数联系,如果可能的话,我宁愿避开朋友,因此请求您提供替代解决方案.
有关如何继续的任何意见或建议将有所帮助:)
我有一个已经使用了一段时间的脚本,可以轻松地将文件上传到服务器。长期以来,它一直运行良好,但是我无法在新的台式机上运行它。
代码很简单:
import os.path
import sys
import os
from ftplib import FTP
host = ""
acc = ""
pw = ""
filepath = sys.argv[1]
if (not os.path.isfile(filepath)):
x = input("ERROR, invalid filepath")
exit()
filename = os.path.basename(filepath)
file_object = open(filepath, 'rb')
ftp = FTP(host)
ftp.login(acc, pw)
ftp.storbinary('STOR ' + filename, file_object)
ftp.quit()
file_object.close()
Run Code Online (Sandbox Code Playgroud)
我将其运行为:
file_uploader.py backup.sql
我收到以下错误:
追溯(最近一次通话):
文件“ C:\ Users \ Admin \ Desktop \ file_uploader.py”,第12行,在
文件路径= sys.argv [1]
IndexError:列表索引超出范围
我不确定为什么会给我一个错误,即使我向脚本传递了一个参数也找不到第一个命令行参数。
我正在使用Python 2.7.2运行Windows 7 64位
谢谢
我遇到一个硬错误问题,它出现在看似随机的时间,指针指向地址A5或FF(我允许的内存空间远低于80000000及以上).它似乎总是与这两个值相同的指针.
我正在使用一个运行STM32F205RE处理器的嵌入式系统,它与一个名为cg2900的fm/bluetooth/gps芯片通信,发生此错误.
使用调试器我可以看到指针在几个测试期间分别指向地址A5和FF.然而,它似乎在随机时间发生,有时我可以运行测试一个小时而没有失败,而其他时间它崩溃20秒.
我正在运行freeRTOS作为调度程序来切换不同的任务(一个用于无线电,一个用于蓝牙,一个用于其他定期维护),这可能会以某种方式干扰.
这可能是什么原因?由于它正在运行自定义硬件,因此不能排除这是一个硬件问题(可能).关于如何调试问题的任何指针(没有双关语)?
编辑:
在进一步调查之后,似乎它在崩溃时非常随机,而不仅仅是那个特定的指针.我使用了一个hardfault处理程序来获取这些寄存器的以下值(所有值都以十六进制表示):
坠机前的半长跑(分钟):
R0 = 1
R1 = fffffffd
R2 = 20000400
R3 = 20007f7c
R12 = 7
LR [R14] = 200000c8 subroutine call return address
PC [R15] = 1010101 program counter
PSR = 8013d0f
BFAR = e000ed38
CFSR = 10000
HFSR = 40000000
DFSR = 0
AFSR = 0
SCB_SHCSR = 0
Run Code Online (Sandbox Code Playgroud)
在崩溃之前非常短暂(秒):
R0 = 40026088
R1 = fffffff1
R2 = cb3
R3 = 1
R12 = 34d
LR [R14] = 40026088 subroutine call …Run Code Online (Sandbox Code Playgroud) 我正在开发一个API,我在编写一些测试用例时遇到了麻烦.我已经编写了一组通用测试用例来测试所有实体.这些包括一般操作,如创建,修改和删除.
/**
* @dataProvider provideCreateData
* @depends LoginTest::testLogin
*/
public function testCreate
/**
* @dataProvider provideModifyData
* @depends testCreate
*/
function testModify
Run Code Online (Sandbox Code Playgroud)
数据提供程序提供了一个API实体列表及其各自的属性,测试动态测试所有实体,而无需我们在将来发生更改时必须主要测试.
上面目前工作正常,但我无法集成其他所需的硬编码测试,例如搜索函数不遵循一般模式.显然我不能在没有现有实体的情况下测试find函数,因此find测试需要在创建测试之后运行,我在这方面遇到了麻烦.我试过用:
/**
* @depends GeneralTest::testCreate
*/
public function testFind() {}
Run Code Online (Sandbox Code Playgroud)
这不起作用,测试没有运行,而是没有明显的原因被跳过.但是,如果我删除依赖项,则运行测试,但是我不能再保证数据库中将存在实体.
我觉得我错过了一些明显的东西,或者我误解了一些重要的概念.
我正在尝试使用泛型将对象列表强制转换为其父对象.我有以下课程:
Entity
Node
OtherClass
Run Code Online (Sandbox Code Playgroud)
Node/OtherClass从Entity继承的位置.我想做的是这样的:
Type toType = typeof(Node); // Actually not gotten this way
Object fieldValue = field.GetValue(item);
List<Entity> entities = (List<Entity>)fieldValue;
foreach (Entity toEnt in entities)
{
// Code using toEnt using its Entity attributes...
}
Run Code Online (Sandbox Code Playgroud)
我能够使用FieldInfo引用获取该字段,但我无法转换列表.字段值是节点列表引用,但它似乎无法将其强制转换为实体列表,这应该是可能的,因为它继承自实体.
转换为Node列表而不是工作,但我也希望代码能够获取OtherClass列表.它也无法转换为对象列表,然后将每个对象转换为实体.
我尝试使用MakeGenericType,这可能是解决方案的一部分,但经过一段时间的努力,我无法让它工作.
谢谢你的时间!