Printing 检查矢量对象在给定dpi和打印大小的打印时是否可见
我有一个文件(*.shp用于GIS),其中包含多边形的集合,可能还有其他矢量对象(但多边形对我来说最重要)。我需要删除不可打印的对象 我不知道选择什么标准。我认为删除边界长度较小的对象比删除面积较小的对象要好(这样长的对象将减少为直线)。但也许有专门的算法Printing 检查矢量对象在给定dpi和打印大小的打印时是否可见,printing,vector,gis,dpi,raster-graphics,Printing,Vector,Gis,Dpi,Raster Graphics,我有一个文件(*.shp用于GIS),其中包含多边形的集合,可能还有其他矢量对象(但多边形对我来说最重要)。我需要删除不可打印的对象 我不知道选择什么标准。我认为删除边界长度较小的对象比删除面积较小的对象要好(这样长的对象将减少为直线)。但也许有专门的算法 换句话说,我只想找到在给定缩放级别可见的对象。这很简单。当你没有提到任何语言时,请考虑下面的伪代码 drawRect = myDevice.GetDrawRect(); for(oneShape in allShapes) { sha
换句话说,我只想找到在给定缩放级别可见的对象。这很简单。当你没有提到任何语言时,请考虑下面的伪代码
drawRect = myDevice.GetDrawRect();
for(oneShape in allShapes)
{
shapeRect = oneShape.GetRect()
if(! drawRect.Contains(shapeRect))
oneShape.MarkAsInvisible();
else
oneShape.Draw();
}
Contains()函数看起来是这样的,假设y值从下到上递增:
bool Rect::Contains(OtherRect)
{
if(left <= OtherRect.right &&
right >= OtherRect.left &&
top >= OtherRect.bottom &&
bottom <= OtherRect.top)
return true
return false;
}
bool Rect::Contains(OtherRect)
{
if(left=OtherRect.left&&
top>=其他rect.bottom&&
底部要消除的多边形将取决于您希望创建的图像的dpi。如果一条直线只填充一个像素,则应消除该多边形或将其替换为点表示。当然,这将受到直线宽度的影响。许多此类问题将通过使用专用的贴图库(如正如谢谢。但如果我理解正确,此代码只检查一个形状是否属于特定区域。我认为“换句话说”令人困惑。当然,您的代码对于实现bat很重要,我也希望删除到小对象。例如,在低缩放级别,我只想显示大陆,在更高级别,我想显示cites。但是,我不想任意决定在给定缩放级别将显示什么。因为如果有人将以高分辨率打印它他应该允许在低缩放级别的CITES上打印国家(也许使用放大镜)。这正是我需要的。但是我更喜欢使用GooToots(www. GooToSo.Org),因为我更喜欢java,C++。很不幸,我不知道如何在Geotools使用它。