我有一堆纬度/经度对映射到(地理上扭曲的)地图上的已知x/y坐标.
然后我还有一个纬度/经度对.我想尽可能在地图上绘制它.我该怎么做呢?
起初,我决定为三个最近的纬度/长点创建一个线性方程组,并计算这些变换,但这根本不适用.由于这是一个线性系统,我也不能使用更多的附近点.
您无法假设North已启动:您拥有的只是现有的lat/long-> x/y映射.
编辑:这不是墨卡托投影,或类似的东西.它的可读性被任意扭曲(想想地铁地图).我想只使用最接近的5到10个映射,这样地图其他部分的失真不会影响我正在尝试计算的映射.
此外,整个地图都在一个非常小的地理区域,所以不必担心全球 - 平地假设是足够好的.
我想做点什么:
ArrayList<CustomObject> objects = new ArrayList<CustomObject>();
...
DozerBeanMapper MAPPER = new DozerBeanMapper();
...
ArrayList<NewObject> newObjects = MAPPER.map(objects, ...);
Run Code Online (Sandbox Code Playgroud)
假设:
<mapping>
<class-a>com.me.CustomObject</class-a>
<class-b>com.me.NewObject</class-b>
<field>
<a>id</a>
<b>id2</b>
</field>
</mapping>
Run Code Online (Sandbox Code Playgroud)
我试过了 :
ArrayList<NewObject> holder = new ArrayList<NewObject>();
MAPPER.map(objects, holder);
Run Code Online (Sandbox Code Playgroud)
但是持有者对象是空的.我也没有运气改变第二个参数...
我首先使用Entity Framework Code.我有一个简单的模型:
public class Variable
{
public string Name { get; set; }
public int Id { get; set; }
public IList<string> TextOptions
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到了属性TextOptions类型的问题List<String>.
当我尝试在Entity Framework中执行此操作时,它不会映射.
我在这里找到了一个解决方案(stackoverflow)来解决我的问题.我基本上修改了我的类,以便它获取列表并使其成为一个分隔的字符串,它会被持久化:
public class Variable : IVariable
{
public string Name { get; set; }
public int Id { get; set; }
public virtual IList<string> TextOptions
{
get
{
return _TextOptions;
}
set
{
_TextOptions = value;
}
}
private IList<string> _TextOptions;
public string TextOptionsSerialized …Run Code Online (Sandbox Code Playgroud) 有很多方法可以将数据库字段名称映射到类名,但是删除下划线的最简单方法是什么?
public IEnumerable<PersonResult> GetPerson(int personId)
{
using (var dbConnection = _dbConnectionFactory.Create(ConnectionStrings.ProjectXYZ))
{
IEnumerable<PersonResult> result =
dbConnection.Query<PersonResult>("fn_get_person", new { personId },
commandType: CommandType.StoredProcedure).ToList();
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
表和数据库字段:
person
--------
person_id
full_name
Run Code Online (Sandbox Code Playgroud)
有效的类:(小巧玲珑已经忽略大写)
public class PersonResult
{
public int Person_Id { get; set; }
public string Full_Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想把课程改为:
public class PersonResult
{
public int PersonId { get; set; }
public string FullName { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 有一种将立方体映射到此处描述的球体的特殊方法:http: //mathproofs.blogspot.com/2005/07/mapping-cube-to-sphere.html
这不是你的基本"标准化点和你已完成"的方法,并提供更均匀间隔的映射.
我试图做出从球体坐标到立方体坐标的映射的逆过程,并且无法得出工作方程式.这是一个相当复杂的方程组,有很多平方根.
任何数学天才都希望对此有所了解?
这是c ++代码中的等式:
sx = x * sqrtf(1.0f - y * y * 0.5f - z * z * 0.5f + y * y * z * z / 3.0f);
sy = y * sqrtf(1.0f - z * z * 0.5f - x * x * 0.5f + z * z * x * x / 3.0f);
sz = z * sqrtf(1.0f - x * x * 0.5f - y * y * 0.5f …Run Code Online (Sandbox Code Playgroud) 我使用VIM,Colemak键盘布局和Microsoft Natural 4000键盘.由于Natural 4000具有不同形状的键,我无法更改键帽.这意味着每个键都标有"错误"键 - 我按下"O"键并输入"Y"键.
这在正常使用中很好,因为我使用Colemak顺利触摸并且不会产生很多错别字.但是对于VIM来说它提出了一个问题,因为我经常需要按顺序"按顺序"击中一个键 - 即,在没有任何上下文的情况下突然点击"g".由于某种原因,这更难做,而且我一直在按错键.
我希望能够点击一个前缀键(比如,领导键两次 - \),然后在状态行上显示的1-2秒内点击任何其他键.
这样,我可以快速点击\然后点击一两个键,看看它"真的"是什么键.
任何想法我怎么能做到这一点?
我目前使用名为procamcalib的JavaCV软件来校准Kinect-Projector设置,该设置以Kinect RGB Camera为原点.此设置仅包括Kinect RGB相机(我现在大致使用Kinect作为普通相机)和一台投影仪.该校准软件使用LibFreenect(OpenKinect)作为Kinect驱动程序.
一旦软件完成其过程,它将为我提供相机和投影仪的内在和外在参数,这些参数被抛出在OpenGL软件上以验证校准,并且是一些问题开始的地方.正确设置投影和模型视图后,我应该能够适应Kinect所看到的投影内容,但为了达到这个目的,我必须在所有3轴上进行手动平移,最后一部分不做对我有任何意义!你能帮我解整一下吗?用于检索Kinect数据的SDK是OpenNI(不是最新的2.x版本,应该是1.5.x)
我将解释我正在做什么来重现这个错误.校准参数使用如下:
投影矩阵设置为(基于 http://sightations.wordpress.com/2010/08/03/simulating-calibrated-cameras-in-opengl/):
r = width/2.0f; l = -width/2.0f;
t = height/2.0f; b = -height/2.0f;
alpha = fx; beta = fy;
xo = cx; yo = cy;
X = kinectCalibration.c_near + kinectCalibration.c_far;
Y = kinectCalibration.c_near*kinectCalibration.c_far;
d = kinectCalibration.c_near - kinectCalibration.c_far;
float* glOrthoMatrix = (float*)malloc(16*sizeof(float));
glOrthoMatrix[0] = 2/(r-l); glOrthoMatrix[4] = 0.0f; glOrthoMatrix[8] = 0.0f; glOrthoMatrix[12] = (r+l)/(l-r);
glOrthoMatrix[1] = 0.0f; glOrthoMatrix[5] = 2/(t-b); glOrthoMatrix[9] = …Run Code Online (Sandbox Code Playgroud) 我正在尝试为作为JSON传入的对象创建内部类类型,但是虽然我已经阅读了这里以及Jackson的网站,但我似乎无法获得正确的组合,所以如果其他人有任何指针他们将非常感激.我在下面发布了一些片段并删除了所有的getter和setter,我没想到他们需要发帖.我正在使用Jackson 2.2.
我试图反序列化的类:
public class Settings {
private int offset;
private int limit;
private String type;
private Map<String, Criteria> criteria;
public class Criteria {
private String restriction;
private Object value;
}
}
Run Code Online (Sandbox Code Playgroud)
我用来反序列化的代码:
ObjectMapper om = new ObjectMapper();
TypeFactory tf = om.getTypeFactory();
JavaType map = tf.constructMapLikeType( Map.class, String.class, Criteria.class );
JavaType type = typeFactory.constructType( Settings.class, map );
Settings settings = om.readValue( entity, type );
Run Code Online (Sandbox Code Playgroud)
我的JSON测试数据:
{ "type": "org.json.Car", "criteria": { "restriction": "eq", "value": "bmw" } }
Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题.我在项目中发现了这个Hibernate配置:
<many-to-one name="employee"
class="com.myapp.Employee"
cascade="merge"
lazy="false"
fetch="select">
<column name="employee_id"
sql-type="bigint"
not-null="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)
不fetch ="select"意味着"延迟加载所有集合和实体"基于提取策略.但是通过写lazy ="false"意味着不要延迟加载.所以上面的配置说:"禁用延迟加载.启用延迟加载." 实际上,这意味着属性是延迟加载的?
所以我可以将配置缩短为:
<many-to-one name="employee"
class="com.myapp.Employee"
cascade="merge"
fetch="select">
<column name="employee_id"
sql-type="bigint"
not-null="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)
但是fetch ="select"是不是默认模式?所以实际上,我可以声明相同的配置:
<many-to-one name="employee"
class="com.myapp.Employee"
cascade="merge">
<column name="employee_id"
sql-type="bigint"
not-null="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)
我对么?错误?想法?谢谢
如果我想启用延迟加载,我必须添加lazy ="true"并删除lazy ="false"?
我想将GPS位置(纬度,经度)转换为x,y坐标.我找到了许多关于这个主题的链接并应用了它,但它没有给我正确的答案!
我按照这些步骤来测试答案:(1)首先,我采取两个位置并使用地图计算它们之间的距离.(2)然后将两个位置转换为x,y坐标.(3)然后再次计算x,y坐标中两点之间的距离,看它是否在点(1)给出了相同的结果.
我发现以下解决方案之一,但它没有给我正确的答案!
latitude = Math.PI * latitude / 180;
longitude = Math.PI * longitude / 180;
// adjust position by radians
latitude -= 1.570795765134; // subtract 90 degrees (in radians)
// and switch z and y
xPos = (app.radius) * Math.sin(latitude) * Math.cos(longitude);
zPos = (app.radius) * Math.sin(latitude) * Math.sin(longitude);
yPos = (app.radius) * Math.cos(latitude);
Run Code Online (Sandbox Code Playgroud)
我也试过这个链接,但仍然不能与我合作!
任何帮助如何从(纬度,经度)转换为(x,y)?
谢谢,