Why is geemap.Map show a AttributeError:module 'geemap' has no attribute 'image_count' - geemap

image = geemap.image_count(
dataImage, roi, start_date='2019-05-01', end_date='2019-10-01', clip=False
)
enter image description here

Related

How to check string existance in string arraylist in flutter?

RxList<String> selectedMemberList = <String>[].obs;
selectedMemberList = [180,160,150]
I want to display text in red color if ID contains in selectedMemberList.
So, I simply called,
if selectedMemberList.contains('180'){
text in red color
}else{
text in black color}
but, I got text in black color every time. That means ID doesnt matched.
How do I match member ID to given selectedMemberList.
if your items are in a single string separated by a comma, first convert that into a list like this :
String collectedIds = "180,160,150";
final split = tagName.split(',');
final Map<int, String> selectedMemberList= {
for (int i = 0; i < split.length; i++)
i: split[i]
};
and now you can check the condition :
if selectedMemberList.contains('180'){
text in red color
}else{
text in black color}
Hope this will help you.
Here is a cleaner way on checking if value exist on a list.
RxList<String> selectedMemberList = <String>[].obs;
selectedMemberList = ["160","180","150"];
if (selectedMemberList.where((item) => item == "180").isNotEmpty){
text in red color
} else {
text in black color
}

React Native: Detect captured image is not blurred

I got a requirement that I have to make sure the captured image is not blurred before uploading it to the server.
Once you get the image content as binary you can run it past various JavaScript libraries to do blur detection.
Search: "Detect image is blurry in JavaScript" to see options.
Example Option
Using opencv.js : https://github.com/rahullahoria/js-blur-image-detection
let src = cv.imread(imgElement);
let dst = new cv.Mat();
let men = new cv.Mat();
let menO = new cv.Mat();
cv.cvtColor(src, src, cv.COLOR_RGB2GRAY, 0);
// You can try more different parameters
var t = cv.Laplacian(src, dst, cv.CV_64F, 1, 1, 0, cv.BORDER_DEFAULT);
console.log(t,cv.meanStdDev(dst, menO, men),menO.data64F[0], men.data64F[0]);
if(men.data64F[0] > 10)
document.getElementById("p1").innerHTML = "Not blur";
else
document.getElementById("p1").innerHTML = "blur";

How to download entire react component as pdf?

I have a resume component that I want to download as a pdf. I'm able to do that using html2canvas and jspdf.
const printDocument = () => {
const input = document.getElementById('resume-wrapper');
html2canvas(input)
.then((canvas) => {
const imgData = canvas.toDataURL('image/png');
console.log("clicked",typeof(imgData))
const pdf = new jsPDF();
pdf.addImage(imgData, 'JPEG', 10, 10);
pdf.save("download.pdf");
})
};
But, I'm getting a small part of my resume component instead of the entire component. The pdf is smaller width and height wise. What can I do to get the entire component?
Your problem is basic page control (PDF is a page XY language) so your new page needs to be defined well and the image needs to work XY within that.
Here is a small sample to show how the two (page and image) inter-relate.
Note the image is FORCED to the defined area, so units need to be calculated before application. If placement is not defined well you will cause stretching (here its desired for image 1 but not image 2) or in your case truncation.
// You'll need to make your image into a Data URL
// From https://contemporarycodes.com/dataUrl/Generator.en.html (minimal size)
var imgData1 = 'data:image/jpeg;base64,/9j/...too big for SO example thus use demodata...';
var imgData2 = 'data:image/png;base64,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wbOKNAGiMvXyOsKUCZBeE7lpthEPpSi5GwTP6lwJEJWpl9cRpiSX5OVySOO7abYRjySEUETuBsGzAPnPkgSIytTL6whTkkvycjmk8d0024hHEkIoIneD4FmAnABRSUrdjx+EKckliSY1A26abcRTq6BVkLtB8KyhzjcQlafX1xGmJJfk9YIIBLhpthGPIINUQu4GwbMEOj9hqTSljjAluSRRpGbATbONeGoVtApyNwieNdT5BqLy9Po6wpTkkrxeEIEAN8024hFkkErI3SB4lkDnG4hKU+oIU5JLEkVqBtw024inVkGrIHeD4FlDnW8gKk+vryNMSS7J6wURCHDTbCMeQQaphNwNgmcJdL6BqDSljjAluSRRpGbATbONeGoVtApyNwieNdT5BqLy9Po6wpTkkrxeEIEAN8024hFkkErI3SB4lkDnG4hKU+oIU5JLEkVqBtw024inVkGrIHeD4FlDnW8gKk+vryNMSS7J6wURCHDTbCMeQQaphNwNgmcJdL6BqDSljjAluSRRpGbATbONeGoVtApyNwieNdT5BqLy9Po6wpTkkrxeEIEAN8024hFkkErI3SB4lkDnG4hKU+oIU5JLEkVqBtw024inVkGrIHeD4FlDnW8gKk+vryNMSS7J6wURCHDTbCMeQQaphNwNgmcJdL6BqDSljjAluSRRpGbATbONeGoVtApyNwieNdSH30DUpqkLA2EgDISB/Qwc/YNS++nIhGEgDISBMKAykABRmUpdGAgDYSAM/D8GEiAxRBgIA2EgDHzEQALkI9ryoTAQBsJAGEiAxANhIAyEgTDwEQMJkI9oy4fCQBgIA2EgARIPhIEwEAbCwEcMJEA+oi0fCgNhIAyEgf8As1aFE0AtmmIAAAAASUVORK5CYII='
// Set up page structure = landscape and metric units plus dimensions
var doc = new jsPDF("l", "mm", [297,210]);
// Build page 1
doc.setPage(1);
doc.setFont('helvetica', 'italic');
doc.setFontSize(30); //Font is Points not page units = approx. 10 mm total but 2 mm below baseline so set 8 mm down !
doc.text('I am a top left heading on page 1', 8.5, 8);
doc.addImage(imgData1, "JPG", 8.5, 10, 280, 190, "A Limousine Cat", "none", 0);
doc.addImage(imgData2, "PNG", 238.5, 150, 50, 50, "Hello World!", "none", 0);
doc.setFillColor(255, 255, 127); //Prepare colour of rectangle
doc.rect(104.5, 114.5, 80, 10, 'F');
doc.text('I am text overlay', 105, 123); //Keeps previous font height and style
doc.setFont('helvetica', 'normal');
doc.setFontSize(30); //Font is Points not page units = approx. 10 mm total but 2 mm below baseline so set 8 mm down !
doc.text('I am a bottom right footing on page 1', 124, 207.5);
doc.save("download.pdf");

Icon not showing on Notifications ( codename one )

Icon not showing on Notifications ( codename one ). Here is the code:
LocalNotification n = new LocalNotification();
n.setId("demo-notification");
n.setAlertBody("It's time to take a break and look at me");
n.setAlertTitle("Break Time!");
// alert sound file name must begin with notification_sound
Display.getInstance().scheduleLocalNotification(
n,
System.currentTimeMillis(),
LocalNotification.REPEAT_MINUTE
);

IUP, button, tree, matrix

1)
I try to load ico image to IUPbutton but with no success.
After linking IM dll's and add proper header this is my approach:
Ihandle *btn1, *btn2;
Ihandle* img1;
btn1 = IupButton("", NULL);
IupSetAttribute(btn1, "MINSIZE", "24x24");
btn2 = IupButton("", NULL);
IupSetAttribute(btn2, "MINSIZE", "24x24");
img1 = IupImage(16, 16, IupLoadImage("icons\\home_16x16.ico"));
IupSetAttribute(btn1, "IMAGE", "img1");
frame = IupHbox(btn1, btn2, NULL);
dlg = IupDialog(IupHbox(mat, IupVbox(frame, tree, NULL), NULL));
IUP don't report any error but image don't appear on the button btn1.
How to load picture from file to a button in RGBA mode?
2)
I fill IupTree with data from sqlite database in following order: 'Name' (which is root) and then about 170 branches which have 1-10 leafs. VALUE is set to 0 and 'Name' is selected.
How can I get with code expanded tree to first branches like when I doubleclick to 'Name'?
I try EXPANDALL attribute but then all leaf's are expanded too what is not wanted.
3)
How can I get IUPtree item 'id' in k_any callback f. e. when press ENTER key?
4)
How can I get IUPtree item text from 'id' in executeleaf and branchopen callbacks?
5)
How can I loop through IUPtree to get id, text, sort of item (branch/leaf)?
6) Is here a way on IUPmatrix to catch keyUP or keyRELEASED event like we get keyPRESS in K_ANY?
1) Pay more attention to the data type of each function. Notice that IupLoadImage already returns an Ihandle. So instead of:
img1 = IupImage(16, 16, IupLoadImage("icons\\home_16x16.ico"));
you should do this:
img1 = IupLoadImage("icons\\home_16x16.ico");
Also if you do this:
IupSetAttribute(btn1, "IMAGE", "img1");
you are specifying a string, you must somehow associate the string "img1" to the Ihandle img1. They are two very different things. Check the IupImage documentation. Or you do:
IupSetHandle("img1", img1);
IupSetAttribute(btn1, "IMAGE", "img1");
Or a better way:
IupSetAttributeHandle(btn1, "IMAGE", img1);
2) Have you try to expand only the branch you want expanded? Check the STATEid attribute on the IupTree documentation.
3) What you want is to the the item that has the focus. So get the VALUE attribute of the IupTree. Notice that the Enter key will trigger the executeleaf callback which already has the item id.
4) Check the TITLEid attribute in the documentation.
5) A tip, when setting/getting attributes of a IupTree, IupMatrix or IupList, you can use:
IupSetAttribute(ih, "TITLE3", "My Title");
or
IupSetAttributeId(ih, "TITLE", 3, "My Title");
6) As I told you before, IupMatrix inherits from IupCanvas, so you must also check for the IupCanvas callbacks. Check the IupMatrix callbacks documentation, at the end there is an explanation about the IupCanvas callbacks.

Resources